equal
deleted
inserted
replaced
135 val split_list: ('a * 'b) list -> 'a list * 'b list |
135 val split_list: ('a * 'b) list -> 'a list * 'b list |
136 val separate: 'a -> 'a list -> 'a list |
136 val separate: 'a -> 'a list -> 'a list |
137 val replicate: int -> 'a -> 'a list |
137 val replicate: int -> 'a -> 'a list |
138 val multiply: 'a list -> 'a list list -> 'a list list |
138 val multiply: 'a list -> 'a list list -> 'a list list |
139 val product: 'a list -> 'b list -> ('a * 'b) list |
139 val product: 'a list -> 'b list -> ('a * 'b) list |
|
140 val coalesce: ('a * 'a -> bool) -> ('a * 'b) list -> ('a * 'b list) list |
140 val filter: ('a -> bool) -> 'a list -> 'a list |
141 val filter: ('a -> bool) -> 'a list -> 'a list |
141 val filter_out: ('a -> bool) -> 'a list -> 'a list |
142 val filter_out: ('a -> bool) -> 'a list -> 'a list |
142 val equal_lists: ('a * 'b -> bool) -> 'a list * 'b list -> bool |
143 val equal_lists: ('a * 'b -> bool) -> 'a list * 'b list -> bool |
143 val is_prefix: ('a * 'a -> bool) -> 'a list -> 'a list -> bool |
144 val is_prefix: ('a * 'a -> bool) -> 'a list -> 'a list -> bool |
144 val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list |
145 val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list |
688 (*direct product*) |
689 (*direct product*) |
689 fun product _ [] = [] |
690 fun product _ [] = [] |
690 | product [] _ = [] |
691 | product [] _ = [] |
691 | product (x :: xs) ys = map (pair x) ys @ product xs ys; |
692 | product (x :: xs) ys = map (pair x) ys @ product xs ys; |
692 |
693 |
|
694 (*coalesce ranges of equal keys*) |
|
695 fun coalesce eq = |
|
696 let |
|
697 fun vals _ [] = ([], []) |
|
698 | vals x (lst as (y, b) :: ps) = |
|
699 if eq (x, y) then vals x ps |>> cons b |
|
700 else ([], lst); |
|
701 fun coal [] = [] |
|
702 | coal ((x, a) :: ps) = |
|
703 let val (bs, qs) = vals x ps |
|
704 in (x, a :: bs) :: coal qs end; |
|
705 in coal end; |
|
706 |
693 |
707 |
694 (* filter *) |
708 (* filter *) |
695 |
709 |
696 (*copy the list preserving elements that satisfy the predicate*) |
710 (*copy the list preserving elements that satisfy the predicate*) |
697 val filter = List.filter; |
711 val filter = List.filter; |