fix evlis argumuent execution order.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 9 Jul 2016 20:01:00 +0000 (22:01 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 9 Jul 2016 20:01:00 +0000 (22:01 +0200)
mes.c
mes.mes
test.mes

diff --git a/mes.c b/mes.c
index 48c21400b6462fb0ba6b83f15c6869cee2b76771..13d86f0c03251777a1c506f3f7f8d65e193ca77d 100644 (file)
--- a/mes.c
+++ b/mes.c
@@ -405,7 +405,8 @@ evlis (scm *m, scm *a)
 #endif
   if (m == &scm_nil)
     return &scm_nil;
-  return cons (eval (car (m), a), evlis (cdr (m), a));
+  scm *e = eval (car (m), a);
+  return cons (e, evlis (cdr (m), a));
 }
 scm scm_evlis = {FUNCTION2, .name="evlis", .function2 = &evlis};
 
diff --git a/mes.mes b/mes.mes
index fa4ac0d49e308ce03238e32a529a7fbb6f279bc2..d17b99bc6068b56130f4c40bb356e16e39d28ac5 100644 (file)
--- a/mes.mes
+++ b/mes.mes
          (getchar)
          '())
         ;; TODO *dot*
-        (#t (xcons (readlis a) (readword (getchar) '() a)))))
-
-(define (xcons a b)
-  (cons b a))
+        (#t (cons (readword (getchar) '() a) (readlis a)))))
 
 (define (readcomment c)
   (cond ((eq c 10) ;; \n
index 10a50fabd89bbc83c8101fc150ce2870803fbacc..fc187d3f137d138d175bcf9eabe60893670e0f88 100644 (file)
--- a/test.mes
+++ b/test.mes
@@ -26,6 +26,9 @@
 4
 (newline)
 
+(cons (display 'one) (display '-) (display 'two))
+(newline)
+
 (display 'hello-display-symbol)
 (newline)