X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=ast.scm;h=3b4d164b9e23fa71a1c3547c01dd6a20fbe13dac;hb=869ab36eec3d6422cd56ba968b1e26ed9cef3ed1;hp=23e7723cc725a3a07b2fe5229576b92e604c34b2;hpb=5ea42a37be529974bff32b719bd91e004d1dfcd8;p=scheme.git diff --git a/ast.scm b/ast.scm index 23e7723..3b4d164 100644 --- 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) @@ -120,7 +120,7 @@ (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)))))