diff --git a/Makefile b/Makefile index 51e5e71c..3e21e2e1 100644 --- a/Makefile +++ b/Makefile @@ -68,7 +68,7 @@ self: ./cyclone scheme/cyclone/libraries.sld ./cyclone scheme/cyclone/transforms.sld ./cyclone scheme/cyclone/cgen.sld - ./cyclone cyclone.scm + ./cyclone cyclone-self.scm .PHONY: test test: $(TESTFILES) cyclone diff --git a/eval.scm b/eval.scm index 3d86ae1d..45e921d4 100644 --- a/eval.scm +++ b/eval.scm @@ -52,7 +52,6 @@ (make-lambda (cdadr exp) ; formal parameters (cddr exp)))) ; body -(define (lambda? exp) (tagged-list? 'lambda exp)) (define (lambda-parameters exp) (cadr exp)) (define (lambda-body exp) (cddr exp)) @@ -68,7 +67,6 @@ (define (make-if predicate consequent alternative) (list 'if predicate consequent alternative)) -(define (begin? exp) (tagged-list? 'begin exp)) (define (begin-actions exp) (cdr exp)) (define (last-exp? seq) (null? (cdr seq))) (define (first-exp seq) (car seq)) diff --git a/scheme/cyclone/util.sld b/scheme/cyclone/util.sld index c77eec3b..21c5d76b 100644 --- a/scheme/cyclone/util.sld +++ b/scheme/cyclone/util.sld @@ -3,13 +3,18 @@ (scheme char)) ; TODO: really need export-all for these cyclone libs!! (export - any - every - filter + ;; Code analysis tagged-list? if? + begin? + lambda? + ;; Code generation mangle - mangle-global) + mangle-global + ;; Scheme library functions + any + every + filter) (include "../../util.scm") (begin ;; Simplified versions of every/any from SRFI-1 diff --git a/transforms.scm b/transforms.scm index 4fec262a..8752e6aa 100644 --- a/transforms.scm +++ b/transforms.scm @@ -398,10 +398,6 @@ (define (letrec->args exp) (map cadr (cadr exp))) -; lambda? : exp -> boolean -(define (lambda? exp) - (tagged-list? 'lambda exp)) - (define (lambda-varargs? exp) (and (lambda? exp) (or (symbol? (lambda->formals exp)) @@ -660,10 +656,6 @@ (define (prim-call? exp) (and (list? exp) (prim? (car exp)))) -; begin? : exp -> boolean -(define (begin? exp) - (tagged-list? 'begin exp)) - ; begin->exps : begin-exp -> list[exp] (define (begin->exps exp) (cdr exp)) diff --git a/util.scm b/util.scm index 8ee1f308..587b6b83 100644 --- a/util.scm +++ b/util.scm @@ -15,6 +15,14 @@ (define (if? exp) (tagged-list? 'if exp)) +; begin? : exp -> boolean +(define (begin? exp) + (tagged-list? 'begin exp)) + +; lambda? : exp -> boolean +(define (lambda? exp) + (tagged-list? 'lambda exp)) + ; char->natural : char -> natural (define (char->natural c) (let ((i (char->integer c)))