equal
deleted
inserted
replaced
17 |
17 |
18 fun minus_nat (Suc m) (Suc n) = minus_nat m n |
18 fun minus_nat (Suc m) (Suc n) = minus_nat m n |
19 | minus_nat Zero_nat n = Zero_nat |
19 | minus_nat Zero_nat n = Zero_nat |
20 | minus_nat m Zero_nat = m; |
20 | minus_nat m Zero_nat = m; |
21 |
21 |
22 fun prod_case f1 (a, b) = f1 a b; |
22 end; (*struct Nat*) |
23 |
23 |
24 end; (*struct Nat*) |
24 structure Product_Type = |
|
25 struct |
|
26 |
|
27 fun split c (a, b) = c a b; |
|
28 |
|
29 end; (*struct Product_Type*) |
25 |
30 |
26 structure Codegen = |
31 structure Codegen = |
27 struct |
32 struct |
28 |
33 |
29 fun pick ((k, v) :: xs) n = |
34 fun pick ((k, v) :: xs) n = |
30 (if Nat.less_nat n k then v else pick xs (Nat.minus_nat n k)) |
35 (if Nat.less_nat n k then v else pick xs (Nat.minus_nat n k)) |
31 | pick (x :: xs) n = |
36 | pick (x :: xs) n = |
32 let |
37 let |
33 val (k, v) = x; |
38 val a = x; |
|
39 val (k, v) = a; |
34 in |
40 in |
35 (if Nat.less_nat n k then v else pick xs (Nat.minus_nat n k)) |
41 (if Nat.less_nat n k then v else pick xs (Nat.minus_nat n k)) |
36 end; |
42 end; |
37 |
43 |
38 end; (*struct Codegen*) |
44 end; (*struct Codegen*) |