diff options
Diffstat (limited to 'stemlib')
-rw-r--r-- | stemlib/aoc1.stem | 9 | ||||
-rw-r--r-- | stemlib/fib.stem | 20 | ||||
-rw-r--r-- | stemlib/math.stem | 2 | ||||
-rw-r--r-- | stemlib/repl.stem | 6 | ||||
-rw-r--r-- | stemlib/simple.stem | 1 | ||||
-rw-r--r-- | stemlib/stdlib.stem | 60 |
6 files changed, 98 insertions, 0 deletions
diff --git a/stemlib/aoc1.stem b/stemlib/aoc1.stem new file mode 100644 index 0000000..16f739d --- /dev/null +++ b/stemlib/aoc1.stem @@ -0,0 +1,9 @@ + +dsc +swap +isnum +char +0 +str + +read_str [ ] diff --git a/stemlib/fib.stem b/stemlib/fib.stem new file mode 100644 index 0000000..de02b5c --- /dev/null +++ b/stemlib/fib.stem @@ -0,0 +1,20 @@ +# Author: Andrei Sova 2023 +fib [ + dup 1 <= [ ] [ + dup 1 - fib + swap + dup 2 - fib + swap + dsc + + + ] if +] func + +main [ + dup 10 <= [ + dup fib . + 1 + main + ] [ exit ] if +] func + +0 main diff --git a/stemlib/math.stem b/stemlib/math.stem new file mode 100644 index 0000000..1a6f931 --- /dev/null +++ b/stemlib/math.stem @@ -0,0 +1,2 @@ +factorial [ dup 0 <= [ 1 + ] [ dup 1 - factorial * ] if ] func +PI 3.1415926 func diff --git a/stemlib/repl.stem b/stemlib/repl.stem new file mode 100644 index 0000000..0131c18 --- /dev/null +++ b/stemlib/repl.stem @@ -0,0 +1,6 @@ +"./stdlib.stem" fread strquote eval +"./math.stem" include + +# You can make your own REPL by changing the code! + +repl [ "> " . read strquote eval repl ] func repl diff --git a/stemlib/simple.stem b/stemlib/simple.stem new file mode 100644 index 0000000..5853c3f --- /dev/null +++ b/stemlib/simple.stem @@ -0,0 +1 @@ +3 4 + . diff --git a/stemlib/stdlib.stem b/stemlib/stdlib.stem new file mode 100644 index 0000000..6b2edac --- /dev/null +++ b/stemlib/stdlib.stem @@ -0,0 +1,60 @@ +#!/usr/local/bin/stem +# Author: Preston Pan +evalstr [ strquote eval ] func +include [ fread evalstr ] func + +neg [ 0 swap - ] func + +# Author of loop function: Andrei S +loop [ + swap dup 0 > [ + swap + dup eval + swap 1 - swap loop + ] [ dsc dsc ] if +] func + + +swapd [ [ swap ] keep ] func +swapt [ [ [ swap ] keep ] keep ] func + +dscd [ swap dsc ] func +dsct [ swapd swap dsc ] func + +dsc3 [ dsc dsc dsc ] func + +# Author: Matthew H +dupd [ [ dup ] keep ] func +dupt [ [ [ dup ] keep ] keep ] func +dupq [ [ [ [ dup ] keep ] keep ] keep ] func + +over [ dupd swap ] func +over2 [ dupt swapd swap ] func +over3 [ dupq swapt swapd swap ] func + +dup2 [ over over ] func +dup3 [ over2 over2 over2 ] func +dup4 [ over3 over3 over3 over3 ] func + +dip2 [ swap [ dip ] dip ] func +dip3 [ swap [ dip ] dip ] func +while [ dup2 [ [ ] if ] dip2 over [ while ] [ dsc dsc ] if ] func +when [ [ ] if ] func + +loop-times [ dup2 [ swap [ ] if ] dip2 +dup [ 1 - loop-times ] [ dsc dsc ] if ] func + + +# d>base [ [ pow * "" swap ] keep2 + +# [ [ over ] [ [ dup2 / floor * swap over - ] keep [ [ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "↊" "↋" ] vat swap + ] with dip2 ] while dsc2 dup len(str-len) ] dip +# - dup2 tail [ head "." ] dip + + ] func + +# Author: Preston Pan +map [ [ ] over2 over2 len 0 swap [ dup4 swap vat over2 eval dscd dscd quote compose swap 1 + dsct dsct dsct over3 swap over3 swap ] swap loop-times dsc3 dscd dscd ] func +filter [ [ ] over2 over2 len 0 swap [ dup4 swap vat over2 eval dscd dscd [ quote compose ] when swap 1 + dsct dsct dsct over3 swap over3 swap ] swap loop-times dsc3 dscd dscd ] func + +# [map][quote][valnew][1] + +# [map][quote][val][map][quote][0] +# [val][map][quote][map][1] |