author | wenzelm |
Wed, 04 Apr 2007 00:11:13 +0200 | |
changeset 22582 | f315da9400fb |
parent 22386 | 4ebe883b02ff |
child 22751 | 1bfd75c1f232 |
permissions | -rw-r--r-- |
21147 | 1 |
structure ROOT = |
2 |
struct |
|
3 |
||
4 |
structure Code_Generator = |
|
5 |
struct |
|
6 |
||
22386 | 7 |
type 'a eq = {op_eq : 'a -> 'a -> bool}; |
8 |
fun op_eq (A_:'a eq) = #op_eq A_; |
|
21147 | 9 |
|
10 |
end; (*struct Code_Generator*) |
|
11 |
||
12 |
structure List = |
|
13 |
struct |
|
14 |
||
22188
a63889770d57
adjusted manual to improved treatment of overloaded constants
haftmann
parents:
22015
diff
changeset
|
15 |
fun memberl A_ x (y :: ys) = |
22015 | 16 |
Code_Generator.op_eq A_ x y orelse memberl A_ x ys |
22188
a63889770d57
adjusted manual to improved treatment of overloaded constants
haftmann
parents:
22015
diff
changeset
|
17 |
| memberl A_ x [] = false; |
21147 | 18 |
|
19 |
end; (*struct List*) |
|
20 |
||
21 |
structure Codegen = |
|
22 |
struct |
|
23 |
||
22188
a63889770d57
adjusted manual to improved treatment of overloaded constants
haftmann
parents:
22015
diff
changeset
|
24 |
fun collect_duplicates A_ xs ys (z :: zs) = |
21147 | 25 |
(if List.memberl A_ z xs |
26 |
then (if List.memberl A_ z ys then collect_duplicates A_ xs ys zs |
|
27 |
else collect_duplicates A_ xs (z :: ys) zs) |
|
21994 | 28 |
else collect_duplicates A_ (z :: xs) (z :: ys) zs) |
22188
a63889770d57
adjusted manual to improved treatment of overloaded constants
haftmann
parents:
22015
diff
changeset
|
29 |
| collect_duplicates A_ y ys [] = y; |
21147 | 30 |
|
31 |
end; (*struct Codegen*) |
|
32 |
||
33 |
end; (*struct ROOT*) |