rosella/libcompiler/compiler.scm

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: