module General: sig .. end
let take: (int, list('a)) => list('a);
let drop: (int, list('a)) => list('a);
let uniq: (('a, 'a) => int, list('a)) => list('a);
let weed: (('a, 'a) => int, list('a)) => list('a);
type stream('a) = Lazy.t(head('a));
type 'a head =
| |
Nil |
| |
Cons of 'a * 'a stream |
let length: stream('a) => int;
let foldr: (('a, 'b) => 'b, stream('a), 'b) => 'b;