TFL/utils.sig
changeset 3391 5e45dd3b64e9
parent 3330 ab7161e593c8
equal deleted inserted replaced
3390:0c7625196d95 3391:5e45dd3b64e9
     6 Basic utilities
     6 Basic utilities
     7 *)
     7 *)
     8 
     8 
     9 signature Utils_sig =
     9 signature Utils_sig =
    10 sig
    10 sig
    11   (* General error format and reporting mechanism *)
       
    12   exception ERR of {module:string,func:string, mesg:string}
    11   exception ERR of {module:string,func:string, mesg:string}
    13   val Raise : exn -> 'a
       
    14 
    12 
    15   val can   : ('a -> 'b) -> 'a -> bool
    13   val can   : ('a -> 'b) -> 'a -> bool
    16   val holds : ('a -> bool) -> 'a -> bool
    14   val holds : ('a -> bool) -> 'a -> bool
    17   val C : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
    15   val C : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
    18 
    16 
    19   (* Set operations *)
       
    20   val mem : ('a -> 'a -> bool) -> 'a -> 'a list -> bool
       
    21   val set_diff : ('a -> 'b -> bool) -> 'a list -> 'b list -> 'a list
       
    22   val mk_set : ('a -> 'a -> bool) -> 'a list -> 'a list
       
    23 
       
    24   val itlist : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
    17   val itlist : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
    25   val rev_itlist : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
    18   val rev_itlist : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
    26   val end_itlist : ('a -> 'a -> 'a) -> 'a list -> 'a
    19   val end_itlist : ('a -> 'a -> 'a) -> 'a list -> 'a
    27   val itlist2 :('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
    20   val itlist2 :('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
    28   val mapfilter : ('a -> 'b) -> 'a list -> 'b list
       
    29   val pluck : ('a -> bool) -> 'a list -> 'a * 'a list
    21   val pluck : ('a -> bool) -> 'a list -> 'a * 'a list
    30   val front_back : 'a list -> 'a list * 'a
       
    31   val zip3 : 'a list -> 'b list -> 'c list -> ('a*'b*'c) list
    22   val zip3 : 'a list -> 'b list -> 'c list -> ('a*'b*'c) list
    32   val take  : ('a -> 'b) -> int * 'a list -> 'b list
    23   val take  : ('a -> 'b) -> int * 'a list -> 'b list
    33   val sort  : ('a -> 'a -> bool) -> 'a list -> 'a list
    24   val sort  : ('a -> 'a -> bool) -> 'a list -> 'a list
    34 
    25 
    35 end;
    26 end;