From b565bb91802982ee67b4b580b68d6fb4c7f93335 Mon Sep 17 00:00:00 2001 From: Arnaud Spiwack Date: Mon, 24 Feb 2014 16:57:04 +0100 Subject: IStream: a concat_map primitive. --- lib/iStream.ml | 2 ++ lib/iStream.mli | 3 +++ 2 files changed, 5 insertions(+) (limited to 'lib') diff --git a/lib/iStream.ml b/lib/iStream.ml index 1d9f55998e..bcb5336f23 100644 --- a/lib/iStream.ml +++ b/lib/iStream.ml @@ -76,3 +76,5 @@ let rec concat_node = function and concat (s : 'a t t) = lazy (concat_node (Lazy.force s)) + +let concat_map f l = concat (map f l) diff --git a/lib/iStream.mli b/lib/iStream.mli index 9e4dec415a..61967f49e4 100644 --- a/lib/iStream.mli +++ b/lib/iStream.mli @@ -61,6 +61,9 @@ val concat : 'a t t -> 'a t val map_filter : ('a -> 'b option) -> 'a t -> 'b t (** Mixing [map] and [filter]. Not tail-rec. *) +val concat_map : ('a -> 'b t) -> 'a t -> 'b t +(** [concat_map f l] is the same as [concat (map f l)]. *) + (** {6 Conversions} *) val of_list : 'a list -> 'a t -- cgit v1.2.3