From a8cd6eb099f5f35c2414abcd84a0f892ab7c374b Mon Sep 17 00:00:00 2001
From: James Cash <james.nvc@gmail.com>
Date: Thu, 19 Jun 2008 18:37:20 -0400
Subject: [PATCH] Defining 'begin' as a macro in lisp tests and fixing
 indentation

---
 extra/lisp/lisp-tests.factor | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/extra/lisp/lisp-tests.factor b/extra/lisp/lisp-tests.factor
index 805a1f5ce0..c3316b459f 100644
--- a/extra/lisp/lisp-tests.factor
+++ b/extra/lisp/lisp-tests.factor
@@ -30,33 +30,31 @@ IN: lisp.test
     "(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 } } [
@@ -66,6 +64,18 @@ IN: lisp.test
     { { 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
@@ -76,11 +86,11 @@ IN: lisp.test
     ] 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