Maybe through Enum, maybe duplicating Foo.enum?
So, every module would have its own 'a t -> 'a LazyList.t? Or just in Enum? I don't know how LazyList and Enum actually compare performance-wise, but if the former is as fast as the latter it could actually be as useful as Enum for many uses (and easier to reason about).
'a t -> 'a LazyList.t