#lang scheme/base (require (file "simplifier.scm")) (require (file "optimizer.scm")) (require (file "mapper.scm")) (provide reduce-function compile-function) (define optimize? (make-parameter #t)) (define box-free-variables? (make-parameter #f)) (define (compile-function lambda-form) (map-variables (reduce-function lambda-form))) (define (reduce-function lambda-form) ((compose (if (optimize?) optimize-function values) (if (box-free-variables?) promote-free-variables values) simplify-function) lambda-form)) ; vim:set sw=2 expandtab: