diff --git a/test-eval-compilation.scm b/test-eval-compilation.scm new file mode 100644 index 00000000..2a64e87d --- /dev/null +++ b/test-eval-compilation.scm @@ -0,0 +1,22 @@ +;; A temporary test file +(import (scheme base) (scheme write)) + +(define (analyze . opts) + (write 'test)) + +(define (analyze-if exp a-env rename-env local-renamed) + (let ((pproc (analyze (if-predicate exp) a-env rename-env local-renamed)) + (cproc (analyze (if-consequent exp) a-env rename-env local-renamed)) + (aproc (analyze (if-alternative exp) a-env rename-env local-renamed))) + (lambda (env) + (if (pproc env) + (cproc env) + (aproc env))))) +(define (if-predicate exp) (cadr exp)) +(define (if-consequent exp) (caddr exp)) +(define (if-alternative exp) + (if (not (null? (cdddr exp))) ;; TODO: add (not) support + (cadddr exp) + #f)) + +(write (analyze-if 'a 'b 'c 'd))