26 lines
526 B
Text
26 lines
526 B
Text
(let stack (fun () {
|
|
(mut data [])
|
|
|
|
(let push (fun (value) (set data (concat [value] data))))
|
|
(let popTop (fun () {
|
|
(let res (head data))
|
|
(pop! data 0)
|
|
res }))
|
|
(let isEmpty? (fun () (empty? data)))
|
|
|
|
(fun (&data &push &popTop &isEmpty?) ()) }))
|
|
|
|
(let myStack (stack))
|
|
(myStack.push 1)
|
|
(myStack.push 2)
|
|
(myStack.push 3)
|
|
|
|
(print myStack.data)
|
|
|
|
(print "top: " (myStack.popTop))
|
|
(print myStack.data)
|
|
|
|
(print "empty: " (myStack.isEmpty?))
|
|
(myStack.popTop)
|
|
(myStack.popTop)
|
|
(print "empty: " (myStack.isEmpty?))
|