37 lines
771 B
Plaintext
37 lines
771 B
Plaintext
{def stack.add
|
|
{lambda {:v :s}
|
|
{let { {_ {A.addfirst! :v :s}}}
|
|
} ok}}
|
|
-> stack.add
|
|
|
|
{def stack.get
|
|
{lambda {:s}
|
|
{let { {:v {A.first :s}}
|
|
{_ {A.subfirst! :s}}
|
|
} :v}}}
|
|
-> stack.get
|
|
|
|
{def stack.peek
|
|
{lambda {:s}
|
|
{A.first :s}}}
|
|
-> stack.peek
|
|
|
|
{def stack.empty?
|
|
{lambda {:s}
|
|
{A.empty? :s}}}
|
|
-> stack.empty?
|
|
|
|
{def S {A.new}} -> S []
|
|
{stack.add 1 {S}} -> ok [1]
|
|
{stack.add 2 {S}} -> ok [2,1]
|
|
{stack.add 3 {S}} -> ok [3,2,1]
|
|
{stack.empty? {S}} -> false
|
|
{stack.get {S}} -> 3 [2,1]
|
|
{stack.add 4 {S}} -> ok [4,2,1]
|
|
{stack.peek {S}} -> 4 [4,2,1]
|
|
{stack.get {S}} -> 4 [2,1]
|
|
{stack.get {S}} -> 2 [1]
|
|
{stack.get {S}} -> 1 []
|
|
{stack.get {S}} -> undefined
|
|
{stack.empty? {S}} -> true
|