2 KiB
PROGRAM
default del
program
<< 'one' >>
-> stack size should be 1
-> stack should be «'one'»
del
program (2)
<< 'one' 2
-> stack size should be 1
-> stack should be «'one' 2»
del
program (3)
<<
-> stack size should be 1
-> stack should be «»
del
program (4)
<< << << <<
-> stack size should be 1
-> stack should be «<< << <<»
del
program (5)
<< -> n << n 2 * >> >>
-> stack size should be 1
-> stack should be «-> n << n 2 * >>»
del
program imbrication
<< 1 << 2 >> >>
-> stack should be «1 << 2 >>»
del
program evaluation
<< 1 << 2 >> >> dup eval
-> stack should be «1 << 2 >>», 1, «2»
del
program 1 arg
default
10
<< -> n << 0 1 n for i i 2 * inv + next >> >>
eval
-> stack should be 1.4644841269841269841269841269841269841
del
nested programs
0 1 10 << -> u0 u1 n << u0 u1 1 n start dup2 + rot drop next swap drop >> >> eval
eval
-> stack should be 89
del
fibo
«dup 1 > if then dup 1 - fibo swap 2 - fibo + else 1 == if then 1 else 0 end end» 'fibo' sto
«dup 1 > if then dup 1 - fibo swap 2 - fibo + else 1 == 1 0 ifte end» 'fibo' sto
7 fibo
13 == if then 'ok!' end
-> stack should be 'ok!'
del
nested programs with local variables
100
10
«dup2 * -> a b c << a b + c / -> d << << -> sym << sym ->str " is " + sym rcl ->str + >> >> 'stringify' sto 'a' stringify 'b' stringify 'c' stringify 'd' stringify >> >>»
eval
-> stack should be "'a' is 100", "'b' is 10", "'c' is 1000", "'d' is 0.11"
del
local variables multiple entries
1 2 3 << -> a b c << "a is " a ->str + "b is " b ->str + "c is " c ->str + >> >> eval
-> stack should be "a is 1", "b is 2", "c is 3"
del
local variables separation (1)
123 'n' sto 1 << -> n << "n is " n ->str + >> >> eval
-> stack should be "n is 1"
del
local variables separation (2)
123 'n' sto 2 << -> n << n sq << -> n << "n is " n ->str + >> >> >> eval >> eval
-> stack should be "n is 4"
del