User Tools

Site Tools


stack

('stack new 10,20,30,40,50,) addtotop (stack :: 25 ; 20 ; 30 ; 40 ; 50 ;)

stack == .. { list

 [new] == (islist°[1])->((top°[0]) obj [1]);fail
 [isempty] == isnull°pop
 [push] == (top°[0]) obj [1],pop°[0]
 [pull] == isempty->('_undef ee id);head ee tail
 [peek] == isempty->'_undef;head
 [size] == length°pop
 [dup]  == isempty->fail;top obj (head,id)°pop
 [swap] == (isempty°tail)->fail;top obj ([1],[0],tail°tail)°pop
 [rolll] ==([1]<=size°[0])->((top°[0]) obj (rotl°(pop°[0]) take [1])
                                              ++(pop°[0]) drop [1]);fail
 [rollr] ==([1]<=size°[0])->((top°[0]) obj (rotr°(pop°[0]) take [1])
                                               ++(pop°[0]) drop [1]);fail
 [isnum] == false
 [addtotop] == (isempty°[0])->fail;
                           (isnull°[1])->[0];
                           (isnum°[1])->((tail°[0]) push [1]+head°[0]);
                           (isobj°[1])->([0] addtotop unbox°[1]);
                           (islist°[1])->([0] addtotop (+ \)°[1]);
                           fail

} isempty == [isempty] fn fail push == [push] op fail pull == [pull] fn fail peek == [peek] fn fail size == [size] fn fail dup == [dup] fn fail swap == [swap] fn [1],[0],pop°pop rolll == [rolll] op fail rollr == [rollr] op fail

addtotop == [addtotop] op fail

stack.txt · Last modified: by metazip