23 lines
584 B
Scheme
23 lines
584 B
Scheme
#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:
|