equal
deleted
inserted
replaced
95 val get_index: ('a -> 'b option) -> 'a list -> (int * 'b) option |
95 val get_index: ('a -> 'b option) -> 'a list -> (int * 'b) option |
96 val get_first: ('a -> 'b option) -> 'a list -> 'b option |
96 val get_first: ('a -> 'b option) -> 'a list -> 'b option |
97 val eq_list: ('a * 'b -> bool) -> 'a list * 'b list -> bool |
97 val eq_list: ('a * 'b -> bool) -> 'a list * 'b list -> bool |
98 val map2: ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
98 val map2: ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
99 val fold2: ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c |
99 val fold2: ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c |
|
100 val forall2: ('a -> 'b -> bool) -> 'a list -> 'b list -> bool |
100 val zip_options: 'a list -> 'b option list -> ('a * 'b) list |
101 val zip_options: 'a list -> 'b option list -> ('a * 'b) list |
101 val ~~ : 'a list * 'b list -> ('a * 'b) list |
102 val ~~ : 'a list * 'b list -> ('a * 'b) list |
102 val map_split: ('a -> 'b * 'c) -> 'a list -> 'b list * 'c list |
103 val map_split: ('a -> 'b * 'c) -> 'a list -> 'b list * 'c list |
103 val split_list: ('a * 'b) list -> 'a list * 'b list |
104 val split_list: ('a * 'b) list -> 'a list * 'b list |
104 val map_product: ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
105 val map_product: ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
541 |
542 |
542 fun fold2 f [] [] z = z |
543 fun fold2 f [] [] z = z |
543 | fold2 f (x :: xs) (y :: ys) z = fold2 f xs ys (f x y z) |
544 | fold2 f (x :: xs) (y :: ys) z = fold2 f xs ys (f x y z) |
544 | fold2 f _ _ _ = raise UnequalLengths; |
545 | fold2 f _ _ _ = raise UnequalLengths; |
545 |
546 |
|
547 fun forall2 P [] [] = true |
|
548 | forall2 P (x :: xs) (y :: ys) = P x y andalso forall2 P xs ys |
|
549 | forall2 P _ _ = false; |
|
550 |
546 fun map_split f [] = ([], []) |
551 fun map_split f [] = ([], []) |
547 | map_split f (x :: xs) = |
552 | map_split f (x :: xs) = |
548 let |
553 let |
549 val (y, w) = f x; |
554 val (y, w) = f x; |
550 val (ys, ws) = map_split f xs; |
555 val (ys, ws) = map_split f xs; |