summaryrefslogtreecommitdiff
path: root/_tests/eval.scm
diff options
context:
space:
mode:
Diffstat (limited to '_tests/eval.scm')
-rw-r--r--_tests/eval.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/_tests/eval.scm b/_tests/eval.scm
new file mode 100644
index 0000000..accd858
--- /dev/null
+++ b/_tests/eval.scm
@@ -0,0 +1,25 @@
+
+
+
+(define (eval form module)
+ (cond
+ ((const? form) form)
+ ((id? form) (lookup form module))
+ ((list? form)
+ (let ((len (list-len form))
+ (ptr (list-ptr form)))
+ (eval-list ptr len module)))))
+
+(define (eval-list ptr len module)
+ (let ((first ptr[0]))
+ (cond
+ ((funcall? first)
+ (let ((fun-ptr (funcall-ptr first))
+ (argv (eval-args ptr len module)))
+ (funcall fun-ptr argv)))
+ (()))))
+
+
+
+
+