aboutsummaryrefslogtreecommitdiff
path: root/stemlib
diff options
context:
space:
mode:
Diffstat (limited to 'stemlib')
-rw-r--r--stemlib/aoc1.stem9
-rw-r--r--stemlib/fib.stem20
-rw-r--r--stemlib/math.stem2
-rw-r--r--stemlib/repl.stem6
-rw-r--r--stemlib/simple.stem1
-rw-r--r--stemlib/stdlib.stem60
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]