Module List.Unfoldable

type 'a t = 'a list
val unfold : ('a -> ('a * 'a) option) -> 'a -> 'a t