Fix let-bindings
[scheme.git] / ast.scm
diff --git a/ast.scm b/ast.scm
index 23e7723cc725a3a07b2fe5229576b92e604c34b2..3b4d164b9e23fa71a1c3547c01dd6a20fbe13dac 100644 (file)
--- a/ast.scm
+++ b/ast.scm
@@ -73,7 +73,7 @@
 (define (let-bindings e)
   (define (pattern-match x body)
     (if (eqv? (ast-type x) 'var)
-       (cons x body)
+       (list (cons x body))
        (let* ([constructor (car x)]
              [destructor (lambda (i) `(destruct ,i ,constructor))])
          (flat-map (lambda (y i)
       (append (range s (- n 1))
              (list (+ s (- n 1))))))
 
-(define (flat-map f . xs) (fold-left append '() (map f xs)))
+(define (flat-map f . xs) (fold-left append '() (apply map (cons f xs))))
 (define (repeat x n) (if (<= n 0) '()
                         (cons x (repeat x (- n 1)))))