Module Feat.Enum

type 'a enum = int -> 'a IFSeq.seq
val empty : 'a enum
val zero : 'a enum
val just : 'a -> 'a enum
val enum : 'a IFSeq.seq -> 'a enum
val pay : 'a enum -> 'a enum
val sum : 'a enum -> 'a enum -> 'a enum
val (++) : 'a enum -> 'a enum -> 'a enum
val exists : 'a list -> ('a -> 'b enum) -> 'b enum
val product : 'a enum -> 'b enum -> ('a * 'b) enum
val (**) : 'a enum -> 'b enum -> ('a * 'b) enum
val balanced_product : 'a enum -> 'b enum -> ('a * 'b) enum
val (*-*) : 'a enum -> 'b enum -> ('a * 'b) enum
val map : ('a -> 'b) -> 'a enum -> 'b enum
val finite : 'a list -> 'a enum
val bool : bool enum
val list : 'a enum -> 'a list enum
val dlist : ('env -> 'a list enum) Fix.fix -> ('env -> ('a * 'env) list) -> 'env -> 'a list enum
val sample : int -> 'a enum -> int -> int -> 'a Stdlib.Seq.t -> 'a Stdlib.Seq.t