aboutsummaryrefslogtreecommitdiff
path: root/lib/iStream.ml
diff options
context:
space:
mode:
authorArnaud Spiwack2014-02-24 16:23:04 +0100
committerArnaud Spiwack2014-02-24 16:23:04 +0100
commit03d5cf5686e9ea5448ee5e4901792130d9527a74 (patch)
tree5659ada4f7f75ddfc3f38cf94e1f843bbb7e42d5 /lib/iStream.ml
parent6d81918e8ca57514eaa5456ed6e77ce39a410725 (diff)
A view type for IStream.
View types are better practice than option types for pattern-matching. (Plus, they save a minute amount of allocations)
Diffstat (limited to 'lib/iStream.ml')
-rw-r--r--lib/iStream.ml10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/iStream.ml b/lib/iStream.ml
index f7d50612f9..ba08ffd24e 100644
--- a/lib/iStream.ml
+++ b/lib/iStream.ml
@@ -6,9 +6,11 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-type 'a node =
+type ('a,'r) peek =
| Nil
-| Cons of 'a * 'a t
+| Cons of 'a * 'r
+
+type 'a node = ('a,'a t) peek
and 'a t = 'a node Lazy.t
@@ -32,9 +34,7 @@ let rec is_empty s = match Lazy.force s with
| Nil -> true
| Cons (_, _) -> false
-let peek s = match Lazy.force s with
-| Nil -> None
-| Cons (x, s) -> Some (x, s)
+let peek = Lazy.force
let rec of_list = function
| [] -> empty