equal
deleted
inserted
replaced
218 val \ : ''a list * ''a -> ''a list |
218 val \ : ''a list * ''a -> ''a list |
219 val \\ : ''a list * ''a list -> ''a list |
219 val \\ : ''a list * ''a list -> ''a list |
220 val distinct: ('a * 'a -> bool) -> 'a list -> 'a list |
220 val distinct: ('a * 'a -> bool) -> 'a list -> 'a list |
221 val duplicates: ('a * 'a -> bool) -> 'a list -> 'a list |
221 val duplicates: ('a * 'a -> bool) -> 'a list -> 'a list |
222 val has_duplicates: ('a * 'a -> bool) -> 'a list -> bool |
222 val has_duplicates: ('a * 'a -> bool) -> 'a list -> bool |
223 val first_duplicate: ('a * 'a -> bool) -> 'a list -> 'a option |
|
224 |
223 |
225 (*lists as tables -- see also Pure/General/alist.ML*) |
224 (*lists as tables -- see also Pure/General/alist.ML*) |
226 val gen_merge_lists: ('a * 'a -> bool) -> 'a list -> 'a list -> 'a list |
225 val gen_merge_lists: ('a * 'a -> bool) -> 'a list -> 'a list -> 'a list |
227 val merge_lists: ''a list -> ''a list -> ''a list |
226 val merge_lists: ''a list -> ''a list -> ''a list |
228 val merge_alists: (''a * 'b) list -> (''a * 'b) list -> (''a * 'b) list |
227 val merge_alists: (''a * 'b) list -> (''a * 'b) list -> (''a * 'b) list |
1049 let |
1048 let |
1050 fun dups [] = false |
1049 fun dups [] = false |
1051 | dups (x :: xs) = member eq xs x orelse dups xs; |
1050 | dups (x :: xs) = member eq xs x orelse dups xs; |
1052 in dups end; |
1051 in dups end; |
1053 |
1052 |
1054 fun first_duplicate eq = |
|
1055 let |
|
1056 fun dup [] = NONE |
|
1057 | dup (x :: xs) = if member eq xs x then SOME x else dup xs; |
|
1058 in dup end; |
|
1059 |
1053 |
1060 (** association lists -- legacy operations **) |
1054 (** association lists -- legacy operations **) |
1061 |
1055 |
1062 fun gen_merge_lists _ xs [] = xs |
1056 fun gen_merge_lists _ xs [] = xs |
1063 | gen_merge_lists _ [] ys = ys |
1057 | gen_merge_lists _ [] ys = ys |