equal
deleted
inserted
replaced
117 val split_list: ('a * 'b) list -> 'a list * 'b list |
117 val split_list: ('a * 'b) list -> 'a list * 'b list |
118 val equal_lists: ('a * 'b -> bool) -> 'a list * 'b list -> bool |
118 val equal_lists: ('a * 'b -> bool) -> 'a list * 'b list -> bool |
119 val prefix: ''a list * ''a list -> bool |
119 val prefix: ''a list * ''a list -> bool |
120 val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list |
120 val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list |
121 val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list |
121 val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list |
|
122 val prefixes1: 'a list -> 'a list list |
|
123 val suffixes1: 'a list -> 'a list list |
122 |
124 |
123 (*integers*) |
125 (*integers*) |
124 val gcd: int * int -> int |
126 val gcd: int * int -> int |
125 val lcm: int * int -> int |
127 val lcm: int * int -> int |
126 val inc: int ref -> int |
128 val inc: int ref -> int |
663 | take_suffix pred (x :: xs) = |
665 | take_suffix pred (x :: xs) = |
664 (case take_suffix pred xs of |
666 (case take_suffix pred xs of |
665 ([], sffx) => if pred x then ([], x :: sffx) else ([x], sffx) |
667 ([], sffx) => if pred x then ([], x :: sffx) else ([x], sffx) |
666 | (prfx, sffx) => (x :: prfx, sffx)); |
668 | (prfx, sffx) => (x :: prfx, sffx)); |
667 |
669 |
|
670 fun prefixes1 [] = [] |
|
671 | prefixes1 (x :: xs) = map (cons x) ([] :: prefixes1 xs); |
|
672 |
|
673 fun suffixes1 xs = map rev (prefixes1 (rev xs)); |
|
674 |
668 |
675 |
669 |
676 |
670 (** integers **) |
677 (** integers **) |
671 |
678 |
672 fun gcd(x,y) = |
679 fun gcd(x,y) = |