23250
|
1 |
structure HOL =
|
21147
|
2 |
struct
|
|
3 |
|
24421
|
4 |
type 'a eq = {eqop : 'a -> 'a -> bool};
|
|
5 |
fun eqop (A_:'a eq) = #eqop A_;
|
21147
|
6 |
|
23250
|
7 |
end; (*struct HOL*)
|
21147
|
8 |
|
|
9 |
structure List =
|
|
10 |
struct
|
|
11 |
|
25370
|
12 |
fun member A_ x (y :: ys) =
|
|
13 |
(if HOL.eqop A_ y x then true else member A_ x ys)
|
23850
|
14 |
| member A_ x [] = false;
|
21147
|
15 |
|
|
16 |
end; (*struct List*)
|
|
17 |
|
|
18 |
structure Codegen =
|
|
19 |
struct
|
|
20 |
|
25182
|
21 |
fun collect_duplicates A_ xs ys (z :: zs) =
|
|
22 |
(if List.member A_ z xs
|
|
23 |
then (if List.member A_ z ys then collect_duplicates A_ xs ys zs
|
|
24 |
else collect_duplicates A_ xs (z :: ys) zs)
|
|
25 |
else collect_duplicates A_ (z :: xs) (z :: ys) zs)
|
|
26 |
| collect_duplicates A_ xs ys [] = xs;
|
21147
|
27 |
|
|
28 |
end; (*struct Codegen*)
|