* `if` function stack ordering is changed to use condition, if-false, if-true (bottom to top). This is so we can pass a value on top of the stack directly to a new `if` in a condition, so we don't have to store a new value in a new variable. * Add __splat__ and __minus__ functions to Int * Add * and - builtins, which call the __splat__ and __minus__ functions of the top stack item, respectively. * Add factorial example because now factorials are possible with this skeleton implementation, albeit a little hacky with the recursion. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
28 lines
328 B
Plaintext
28 lines
328 B
Plaintext
[ :x x x ] :dup
|
|
|
|
0 :factorial
|
|
[
|
|
dup!
|
|
[dup! 1 -! factorial! *!]
|
|
[:_ 1]
|
|
if!
|
|
]
|
|
:factorial
|
|
|
|
[
|
|
dup! print!
|
|
"! = " print!
|
|
factorial!
|
|
println!
|
|
]
|
|
:do-factorial
|
|
|
|
1 do-factorial!
|
|
2 do-factorial!
|
|
3 do-factorial!
|
|
4 do-factorial!
|
|
5 do-factorial!
|
|
6 do-factorial!
|
|
7 do-factorial!
|
|
8 do-factorial!
|
|
9 do-factorial! |