diff --git a/scmvm/language/scheme.scm b/scmvm/language/scheme.scm index 0dac081..d09a9e1 100644 --- a/scmvm/language/scheme.scm +++ b/scmvm/language/scheme.scm @@ -76,14 +76,14 @@ (define (desugar-body body) (match body ['() '()] - [`(,e) (desugar-exp e)] - [`(. ,e*) `(begin ,@(map desugar-exp e*))])) + [(e) (desugar-exp e)] + [(e* ...) `(begin ,@(map desugar-exp e*))])) ;; A-Normalization -;; All arguments to lambdas are atomic, all lets have ;; ::= ... ;; ::= | +;; ::= (define ) ;; ::= ;; | ;; | (let (( )) ) @@ -93,6 +93,7 @@ ;; ::= (lambda ( ...) exp) ;; | | | #t | #f ;; Atomic expressions are guaranteed to terminate without side effects or errors +;; - All arguments to lambdas are atomic ;; - All complex (non-atomic) expressions are let-bound or in a tail position ;; - All let expressions bind a single var ;; - begin expressions are decomposed