"(lambda (&rest xs) xs)" lisp-string>factor "list" lisp-define
{ 5 } [
- ! [ 2 3 ] "+" <lisp-symbol> funcall
- "(+ 2 3)" lisp-eval
+ "(+ 2 3)" lisp-eval
] unit-test
{ 8.3 } [
- ! [ 10.4 2.1 ] "-" <lisp-symbol> funcall
- "(- 10.4 2.1)" lisp-eval
+ "(- 10.4 2.1)" lisp-eval
] unit-test
{ 3 } [
- "((lambda (x y) (+ x y)) 1 2)" lisp-eval
+ "((lambda (x y) (+ x y)) 1 2)" lisp-eval
] unit-test
{ 42 } [
- "((lambda (x y z) (+ x (- y z))) 40 3 1)" lisp-eval
+ "((lambda (x y z) (+ x (- y z))) 40 3 1)" lisp-eval
] unit-test
{ "b" } [
- "(cond (#f \"a\") (#t \"b\"))" lisp-eval
+ "(cond (#f \"a\") (#t \"b\"))" lisp-eval
] unit-test
{ "b" } [
- "(cond ((< 1 2) \"b\") (#t \"a\"))" lisp-eval
+ "(cond ((< 1 2) \"b\") (#t \"a\"))" lisp-eval
] unit-test
-
- { 5 } [
- "(begin (+ 1 4))" lisp-eval
+
+ { +nil+ } [
+ "(list)" lisp-eval
] unit-test
{ { 1 2 3 4 5 } } [
{ { 1 2 { 3 { 4 } 5 } } } [
"(list 1 2 (list 3 (list 4) 5))" lisp-eval cons>seq
] unit-test
+
+ { T{ lisp-symbol f "begin" } } [
+ "(defmacro begin (&rest body) (list (list (quote lambda) (list) body)))" lisp-eval
+ ] unit-test
+
+ { t } [
+ T{ lisp-symbol f "begin" } lisp-macro?
+ ] unit-test
+
+ { 5 } [
+ "(begin (+ 1 4))" lisp-eval
+ ] unit-test
{ T{ lisp-symbol f "if" } } [
"(defmacro if (pred tr fl) (list (quote cond) (list pred tr) (list #t fl)))" lisp-eval
] unit-test
{ 1 } [
- "(if #t 1 2)" lisp-eval
+ "(if #t 1 2)" lisp-eval
] unit-test
{ 3 } [
- "((lambda (x) (if x (begin (+ 1 2)) (- 3 5))) #t)" lisp-eval
+ "((lambda (x) (if x (+ 1 2) (- 3 5))) #t)" lisp-eval
] unit-test
] with-interactive-vocabs