Avoid let* in scm.mes.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 21 Oct 2016 08:52:59 +0000 (10:52 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 21 Oct 2016 08:52:59 +0000 (10:52 +0200)
* module/mes/scm.mes (case, max, min): Avoid let*.

module/mes/scm.mes

index 3dcd5e6fd5b5c01c7737b93cd2e727d86fc54f76..bf6cbc9a424d751adbdeaf94a2c5bf3498980f9d 100644 (file)
 (define (list . rest) rest)
 
 (define-macro (case val . args)
-  (if (null? args)
-      #f
-      (let* ((clause (car args))
-             (pred (car clause))
-             (body (cdr clause)))
-        (if (pair? pred)
-            `(if ,(if (null? (cdr pred))
-                      `(eq? ,val ',(car pred))
-                           `(member ,val ',pred))
-                 (begin ,@body)
-                 (case ,val ,@(cdr args)))
-            `(begin ,@body)))))
+  (if (null? args) #f
+      (let ((clause (car args)))
+        (let ((pred (car clause)))
+          (let ((body (cdr clause)))
+           (if (pair? pred) `(if ,(if (null? (cdr pred))
+                                      `(eq? ,val ',(car pred))
+                                      `(member ,val ',pred))
+                                 (begin ,@body)
+                                 (case ,val ,@(cdr args)))
+               `(begin ,@body)))))))
 
 (define-macro (when expr . body)
   `(if ,expr
 
 (define (max x . rest)
   (if (null? rest) x
-      (let* ((y (car rest))
-             (z (if (> x y) x y)))
-        (apply max (cons z (cdr rest))))))
+      (let ((y (car rest)))
+        (let ((z (if (> x y) x y)))
+          (apply max (cons z (cdr rest)))))))
 
 (define (min x . rest)
   (if (null? rest) x
-      (let* ((y (car rest))
-             (z (if (< x y) x y)))
-        (apply min (cons z (cdr rest))))))
+      (let ((y (car rest)))
+        (let ((z (if (< x y) x y)))
+          (apply min (cons z (cdr rest)))))))
 
 (define gensym
   (let ((counter 0))