diff options
| author | Arnaud Spiwack | 2014-02-24 16:23:04 +0100 |
|---|---|---|
| committer | Arnaud Spiwack | 2014-02-24 16:23:04 +0100 |
| commit | 03d5cf5686e9ea5448ee5e4901792130d9527a74 (patch) | |
| tree | 5659ada4f7f75ddfc3f38cf94e1f843bbb7e42d5 /lib/iStream.ml | |
| parent | 6d81918e8ca57514eaa5456ed6e77ce39a410725 (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.ml | 10 |
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 |
