From b3c76eb897efd1a86e76346dcb3608e761125af2 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Thu, 3 Oct 2013 21:53:56 +0200 Subject: [PATCH] bugfix in Sequence.take --- sequence.ml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sequence.ml b/sequence.ml index cf7d1a50..b6a4f850 100644 --- a/sequence.ml +++ b/sequence.ml @@ -329,11 +329,13 @@ exception ExitSequence (** Take at most [n] elements from the sequence *) let take n seq = let count = ref 0 in - fun k -> - try - seq - (fun x -> if !count < n then begin incr count; k x end - else raise ExitSequence) + if n = 0 then empty + else fun k -> + try + seq (fun x -> + incr count; + k x; + if !count = n then raise ExitSequence) with ExitSequence -> () (** Drop the [n] first elements of the sequence *)