|(require compiler/compile-file)||package: base|
src : path-string?
dest : path-string? =
(let-values ([(base name dir?) (split-path src)]) (build-path base "compiled" (path-add-suffix name #".zo"))) filter : (any/c . -> . any/c) = values
If the filter procedure is provided, it is applied to each source expression, and the result is compiled.
Beware that compile-file uses the current reader parameterization to read src. Typically, compile-file should be called from a thunk passed to with-module-reading-parameterization so that the source program is parsed in a consistent way and allowing #lang.
Each expression in src is compiled independently. If src does not contain a single module expression, then earlier expressions can affect the compilation of later expressions when src is loaded directly. An appropriate filter can make compilation behave like evaluation, but the problem is also solved (as much as possible) by the compile-zos procedure.
See also managed-compile-zo.