From Okasaki's Functional Data Structures. Represents a functional heap
(Changed in version 2.9.0) The behavior of scanRight has changed. The previous behavior can be reproduced with scanRight.reverse.
(Changed in version 2.9.0) transpose throws an IllegalArgumentException if collections are not uniformly sized.
(Since version 2.10.0) use fold instead