Slide 23
Slide 23 text
structure SizedListStack : STACK =
struct
type 'a stack = ('a list * int)
val empty = ([], 0)
fun push x (st, sz) = (x::st, sz + 1)
fun pop (x::st, sz) = SOME (x, (st, sz - 1))
| pop ([], _) = NONE
fun size (st, sz) = sz
end
!
A More Efficient Implementation
23