Add recursive let-bindings
[scheme.git] / ast.scm
diff --git a/ast.scm b/ast.scm
index 19dc7a0f5d3bea33793e1de676016be618baa103..2ffad975f66f1ec4fbca3f32f095e484658ed726 100644 (file)
--- a/ast.scm
+++ b/ast.scm
 (define (lambda? x)
   (and (list? x) (eq? (car x) 'lambda)))
 
-(define lambda-arg cadr)
-(define lambda-body cddr)
+; for use in normalized form
+(define lambda-arg caadr)
+; for use elsewhere
+(define lambda-args cadr)
+(define lambda-body caddr)
 
 (define (var? x)
   (and (not (list? x)) (symbol? x)))
+
+(define (builtin? x)
+  (case x
+    ('+ #t)
+    ('- #t)
+    ('* #t)
+    ('! #t)
+    ('bool->int #t)
+    (else #f)))