X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;f=ast.scm;h=2ffad975f66f1ec4fbca3f32f095e484658ed726;hb=43f8c4631ae0a3163c780e7511a96f6b05054544;hp=19dc7a0f5d3bea33793e1de676016be618baa103;hpb=3ce93ef63f164f8dc63c89f1a97f46e200c71d02;p=scheme.git diff --git a/ast.scm b/ast.scm index 19dc7a0..2ffad97 100644 --- a/ast.scm +++ b/ast.scm @@ -13,8 +13,20 @@ (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)))