25 lines
630 B
Scheme
25 lines
630 B
Scheme
#lang scheme/base
|
|
|
|
(require (file "simplifier.scm"))
|
|
(require (file "optimizer.scm"))
|
|
(require (file "mapper.scm"))
|
|
|
|
(provide reduce-function
|
|
compile-function
|
|
optimize?
|
|
box-free-variables?)
|
|
|
|
(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-lambda)
|
|
lambda-form))
|
|
|
|
; vim:set sw=2 expandtab:
|