From ae390d34f4a6b9f58af50a3d25b36448b6536d98 Mon Sep 17 00:00:00 2001 From: Drup Date: Fri, 8 Aug 2014 20:37:54 +0200 Subject: [PATCH] Add on_list. --- sequence.ml | 9 +++++---- sequence.mli | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sequence.ml b/sequence.ml index 9e5fb84..d9bc87e 100644 --- a/sequence.ml +++ b/sequence.ml @@ -436,14 +436,17 @@ let to_list seq = List.rev (fold (fun y x -> x::y) [] seq) let to_rev_list seq = fold (fun y x -> x :: y) [] seq +let of_list l k = List.iter k l + +let on_list f l = + to_list (f (of_list l)) + let to_opt = head let of_opt o k = match o with | None -> () | Some x -> k x -let of_list l k = List.iter k l - let to_array seq = let l = MList.of_seq seq in let n = MList.length l in @@ -767,5 +770,3 @@ module IO = struct let write_lines ?mode ?flags filename seq = write_to ?mode ?flags filename (snoc (intersperse "\n" seq) "\n") end - - diff --git a/sequence.mli b/sequence.mli index 2d8ee31..e81a729 100644 --- a/sequence.mli +++ b/sequence.mli @@ -319,6 +319,11 @@ val to_rev_list : 'a t -> 'a list val of_list : 'a list -> 'a t +val on_list : ('a t -> 'b t) -> 'a list -> 'b list +(** [on_list f l] is equivalent to [to_list @@ f @@ of_list l]. + @since NEXT_RELEASE +*) + val to_opt : 'a t -> 'a option (** Alias to {!head} @since NEXT_RELEASE *)