diff options
Diffstat (limited to 'module/system/base')
-rw-r--r-- | module/system/base/compile.scm | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/module/system/base/compile.scm b/module/system/base/compile.scm index 1cf7d6c15..f83834da9 100644 --- a/module/system/base/compile.scm +++ b/module/system/base/compile.scm @@ -181,12 +181,18 @@ time. Useful for supporting some forms of dynamic compilation. Returns (or (lookup-decompilation-order from to) (error "no way to decompile" from "to" to)))) +(define (decompile-fold passes exp env opts) + (if (null? passes) + (values exp env) + (receive (exp env) ((car passes) exp env opts) + (decompile-fold (cdr passes) exp env opts)))) + (define* (decompile x #:key (env #f) (from 'value) (to 'assembly) (opts '())) - (compile-fold (decompile-passes from to opts) - x - env - opts)) + (decompile-fold (decompile-passes from to opts) + x + env + opts)) |