equal
deleted
inserted
replaced
9 sig |
9 sig |
10 type 'a T (*= 'a * 'a list*) |
10 type 'a T (*= 'a * 'a list*) |
11 val level: 'a T -> int |
11 val level: 'a T -> int |
12 val init: 'a -> 'a T |
12 val init: 'a -> 'a T |
13 val top: 'a T -> 'a |
13 val top: 'a T -> 'a |
14 val map: ('a -> 'a) -> 'a T -> 'a T |
14 val map_top: ('a -> 'a) -> 'a T -> 'a T |
|
15 val map_all: ('a -> 'a) -> 'a T -> 'a T |
15 val push: 'a T -> 'a T |
16 val push: 'a T -> 'a T |
16 val pop: 'a T -> 'a T (*exception Empty*) |
17 val pop: 'a T -> 'a T (*exception Empty*) |
17 end; |
18 end; |
18 |
19 |
19 structure Stack: STACK = |
20 structure Stack: STACK = |
25 |
26 |
26 fun init x = (x, []); |
27 fun init x = (x, []); |
27 |
28 |
28 fun top (x, _) = x; |
29 fun top (x, _) = x; |
29 |
30 |
30 fun map f (x, xs) = (f x, xs); |
31 fun map_top f (x, xs) = (f x, xs); |
|
32 |
|
33 fun map_all f (x, xs) = (f x, map f xs); |
31 |
34 |
32 fun push (x, xs) = (x, x :: xs); |
35 fun push (x, xs) = (x, x :: xs); |
33 |
36 |
34 fun pop (_, x :: xs) = (x, xs) |
37 fun pop (_, x :: xs) = (x, xs) |
35 | pop (_, []) = raise Empty; |
38 | pop (_, []) = raise Empty; |