`((lambda ,(map (lambda (x) (car x)) args)
,@body) ,@(map (lambda (x) (cadr x)) args)))
+; let*
+
+(define-macro (let* args . body)
+ (if (null? args)
+ `(let () ,@body)
+ `(let (,(car args))
+ (let* ,(cdr args) ,@body))))
+
; while
(define-macro (while condition . body)
R> drop ['] eval goto-deferred \ Tail call optimization
endof
- except-message: ." object not applicable." recoverable-exception throw
+ except-message: ." object '" drop print ." ' not applicable." recoverable-exception throw
endcase
;