safelist.mli (2135B)
1 (* Unison file synchronizer: src/ubase/safelist.mli *) 2 (* Copyright 1999-2020, Benjamin C. Pierce (see COPYING for details) *) 3 4 (* All functions here are tail recursive and will work for arbitrary 5 sized lists (unlike some of the standard ones). The intention is that 6 the built-in List module should not be referred to outside this module. *) 7 8 (* Functions from built-in List module *) 9 val map : ('a -> 'b) -> 'a list -> 'b list 10 val rev_map : ('a -> 'b) -> 'a list -> 'b list 11 val append : 'a list -> 'a list -> 'a list 12 val rev_append : 'a list -> 'a list -> 'a list 13 val concat : 'a list list -> 'a list 14 val combine : 'a list -> 'b list -> ('a * 'b) list 15 val iter : ('a -> unit) -> 'a list -> unit 16 val iteri : (int -> 'a -> unit) -> 'a list -> unit (* zero-based *) 17 val rev : 'a list -> 'a list 18 val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b 19 val hd : 'a list -> 'a 20 val tl : 'a list -> 'a list 21 val nth : 'a list -> int -> 'a 22 val length : 'a list -> int 23 val mem : 'a -> 'a list -> bool 24 val flatten : 'a list list -> 'a list 25 val assoc : 'a -> ('a * 'b) list -> 'b 26 val for_all : ('a -> bool) -> 'a list -> bool 27 val exists : ('a -> bool) -> 'a list -> bool 28 val split : ('a * 'b) list -> 'a list * 'b list 29 val find : ('a -> bool) -> 'a list -> 'a 30 val filter : ('a -> bool) -> 'a list -> 'a list 31 val partition : ('a -> bool) -> 'a list -> 'a list * 'a list 32 val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list 33 val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a 34 val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list 35 val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit 36 val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list 37 val sort : ('a -> 'a -> int) -> 'a list -> 'a list 38 39 (* Other useful list-processing functions *) 40 val filterMap : ('a -> 'b option) -> 'a list -> 'b list 41 val filterMap2 : ('a -> 'b option * 'c option) -> 'a list -> 'b list * 'c list 42 val transpose : 'a list list -> 'a list list 43 val filterBoth : ('a -> bool) -> 'a list -> ('a list * 'a list) 44 val allElementsEqual : 'a list -> bool 45 val flatten_map : ('a -> 'b list) -> 'a list -> 'b list 46 val remove : 'a -> 'a list -> 'a list