diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util.ml | 7 | ||||
-rw-r--r-- | lib/util.mli | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml index 0f5b3dbf5..1bb69bf32 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -254,6 +254,11 @@ let list_splitby p = in splitby_loop [] +let rec list_split3 = function + | [] -> ([], [], []) + | (x,y,z)::l -> + let (rx, ry, rz) = list_split3 l in (x::rx, y::ry, z::rz) + let list_firstn n l = let rec aux acc = function | (0, l) -> List.rev acc @@ -510,6 +515,8 @@ let pr_fnl = fnl let pr_int = int let pr_str = str let pr_coma () = str "," ++ spc () +let pr_semicolon () = str ";" ++ spc () +let pr_bar () = str "|" ++ spc () let rec prlist elem l = match l with | [] -> mt () diff --git a/lib/util.mli b/lib/util.mli index 2ed595ef1..6bdc54b4b 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -85,6 +85,7 @@ val list_try_find : ('a -> 'b) -> 'a list -> 'b val list_uniquize : 'a list -> 'a list val list_subset : 'a list -> 'a list -> bool val list_splitby : ('a -> bool) -> 'a list -> 'a list * 'a list +val list_split3 : ('a * 'b * 'c) list -> 'a list * 'b list * 'c list val list_firstn : int -> 'a list -> 'a list val list_last : 'a list -> 'a val list_lastn : int -> 'a list -> 'a list @@ -168,6 +169,8 @@ val pr_fnl : unit -> std_ppcmds val pr_int : int -> std_ppcmds val pr_str : string -> std_ppcmds val pr_coma : unit -> std_ppcmds +val pr_semicolon : unit -> std_ppcmds +val pr_bar : unit -> std_ppcmds val prlist : ('a -> std_ppcmds) -> 'a list -> std_ppcmds val prvecti : (int -> 'a -> std_ppcmds) -> 'a array -> std_ppcmds |