From 3d61de614ee463878ee37a5fc31e0533aca90cd1 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 19 May 2014 14:58:11 +0200 Subject: [PATCH] apparently drup doesn't like polymorphic variants --- sequence.ml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sequence.ml b/sequence.ml index d4150d1..893f6c7 100644 --- a/sequence.ml +++ b/sequence.ml @@ -243,17 +243,19 @@ let persistent seq = let l = MList.of_seq seq in MList.to_seq l -type 'a lazy_seq = [`Suspend | `Cached of 'a t] ref +type 'a lazy_state = + | LazySuspend + | LazyCached of 'a t let persistent_lazy (seq:'a t) = - let (r:'a lazy_seq) = ref `Suspend in + let r = ref LazySuspend in fun k -> match !r with - | `Cached seq' -> seq' k - | `Suspend -> + | LazyCached seq' -> seq' k + | LazySuspend -> (* here if this traversal is interruted, no caching occurs *) let seq' = MList.of_seq_with seq k in - r := `Cached (MList.to_seq seq') + r := LazyCached (MList.to_seq seq') (** Sort the sequence. Eager, O(n) ram and O(n ln(n)) time. *) let sort ?(cmp=Pervasives.compare) seq =