Change if function stack ordering, add some basic math ops to Int, add factorial example
* `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>
This commit is contained in:
28
examples/factorial.sy
Normal file
28
examples/factorial.sy
Normal file
@@ -0,0 +1,28 @@
|
||||
[ :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!
|
||||
Reference in New Issue
Block a user