47 Leaf3 of elem * elem * elem | |
47 Leaf3 of elem * elem * elem | |
48 Branch2 of T * elem * T | |
48 Branch2 of T * elem * T | |
49 Branch3 of T * elem * T * elem * T | |
49 Branch3 of T * elem * T * elem * T | |
50 Size of int * T; |
50 Size of int * T; |
51 |
51 |
52 (*literal copy from table.ML*) |
|
53 fun make2 (Empty, e, Empty) = Leaf1 e |
52 fun make2 (Empty, e, Empty) = Leaf1 e |
54 | make2 (Branch2 (Empty, e1, Empty), e2, right) = make2 (Leaf1 e1, e2, right) |
53 | make2 (Branch2 (Empty, e1, Empty), e2, right) = make2 (Leaf1 e1, e2, right) |
55 | make2 (left, e1, Branch2 (Empty, e2, Empty)) = make2 (left, e1, Leaf1 e2) |
54 | make2 (left, e1, Branch2 (Empty, e2, Empty)) = make2 (left, e1, Leaf1 e2) |
56 | make2 (Branch3 (Empty, e1, Empty, e2, Empty), e3, right) = make2 (Leaf2 (e1, e2), e3, right) |
55 | make2 (Branch3 (Empty, e1, Empty, e2, Empty), e3, right) = make2 (Leaf2 (e1, e2), e3, right) |
57 | make2 (left, e1, Branch3 (Empty, e2, Empty, e3, Empty)) = make2 (left, e1, Leaf2 (e2, e3)) |
56 | make2 (left, e1, Branch3 (Empty, e2, Empty, e3, Empty)) = make2 (left, e1, Leaf2 (e2, e3)) |
60 | make2 (Leaf1 e1, e2, Leaf1 e3) = Leaf3 (e1, e2, e3) |
59 | make2 (Leaf1 e1, e2, Leaf1 e3) = Leaf3 (e1, e2, e3) |
61 | make2 (Leaf2 (e1, e2), e3, Empty) = Leaf3 (e1, e2, e3) |
60 | make2 (Leaf2 (e1, e2), e3, Empty) = Leaf3 (e1, e2, e3) |
62 | make2 (Empty, e1, Leaf2 (e2, e3)) = Leaf3 (e1, e2, e3) |
61 | make2 (Empty, e1, Leaf2 (e2, e3)) = Leaf3 (e1, e2, e3) |
63 | make2 arg = Branch2 arg; |
62 | make2 arg = Branch2 arg; |
64 |
63 |
65 (*literal copy from table.ML*) |
|
66 fun make3 (Empty, e1, Empty, e2, Empty) = Leaf2 (e1, e2) |
64 fun make3 (Empty, e1, Empty, e2, Empty) = Leaf2 (e1, e2) |
67 | make3 (Branch2 (Empty, e1, Empty), e2, mid, e3, right) = make3 (Leaf1 e1, e2, mid, e3, right) |
65 | make3 (Branch2 (Empty, e1, Empty), e2, mid, e3, right) = make3 (Leaf1 e1, e2, mid, e3, right) |
68 | make3 (left, e1, Branch2 (Empty, e2, Empty), e3, right) = make3 (left, e1, Leaf1 e2, e3, right) |
66 | make3 (left, e1, Branch2 (Empty, e2, Empty), e3, right) = make3 (left, e1, Leaf1 e2, e3, right) |
69 | make3 (left, e1, mid, e2, Branch2 (Empty, e3, Empty)) = make3 (left, e1, mid, e2, Leaf1 e3) |
67 | make3 (left, e1, mid, e2, Branch2 (Empty, e3, Empty)) = make3 (left, e1, mid, e2, Leaf1 e3) |
70 | make3 (Leaf1 e1, e2, Empty, e3, Empty) = Leaf3 (e1, e2, e3) |
68 | make3 (Leaf1 e1, e2, Empty, e3, Empty) = Leaf3 (e1, e2, e3) |
71 | make3 (Empty, e1, Leaf1 e2, e3, Empty) = Leaf3 (e1, e2, e3) |
69 | make3 (Empty, e1, Leaf1 e2, e3, Empty) = Leaf3 (e1, e2, e3) |
72 | make3 (Empty, e1, Empty, e2, Leaf1 e3) = Leaf3 (e1, e2, e3) |
70 | make3 (Empty, e1, Empty, e2, Leaf1 e3) = Leaf3 (e1, e2, e3) |
73 | make3 arg = Branch3 arg; |
71 | make3 arg = Branch3 arg; |
74 |
72 |
75 (*literal copy from table.ML*) |
|
76 fun unmake (Leaf1 e) = Branch2 (Empty, e, Empty) |
73 fun unmake (Leaf1 e) = Branch2 (Empty, e, Empty) |
77 | unmake (Leaf2 (e1, e2)) = Branch3 (Empty, e1, Empty, e2, Empty) |
74 | unmake (Leaf2 (e1, e2)) = Branch3 (Empty, e1, Empty, e2, Empty) |
78 | unmake (Leaf3 (e1, e2, e3)) = |
75 | unmake (Leaf3 (e1, e2, e3)) = |
79 Branch2 (Branch2 (Empty, e1, Empty), e2, Branch2 (Empty, e3, Empty)) |
76 Branch2 (Branch2 (Empty, e1, Empty), e2, Branch2 (Empty, e3, Empty)) |
80 | unmake (Size (_, arg)) = arg |
77 | unmake (Size (_, arg)) = arg |