bugfix in Sequence.take

This commit is contained in:
Simon Cruanes 2013-10-03 21:53:56 +02:00
parent 0f972ba6a2
commit b3c76eb897

View file

@ -329,11 +329,13 @@ exception ExitSequence
(** Take at most [n] elements from the sequence *) (** Take at most [n] elements from the sequence *)
let take n seq = let take n seq =
let count = ref 0 in let count = ref 0 in
fun k -> if n = 0 then empty
try else fun k ->
seq try
(fun x -> if !count < n then begin incr count; k x end seq (fun x ->
else raise ExitSequence) incr count;
k x;
if !count = n then raise ExitSequence)
with ExitSequence -> () with ExitSequence -> ()
(** Drop the [n] first elements of the sequence *) (** Drop the [n] first elements of the sequence *)