summaryrefslogtreecommitdiff
path: root/module/system/repl/command.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/system/repl/command.scm')
-rw-r--r--module/system/repl/command.scm15
1 files changed, 15 insertions, 0 deletions
diff --git a/module/system/repl/command.scm b/module/system/repl/command.scm
index a2f2a6f84..e27ca9a30 100644
--- a/module/system/repl/command.scm
+++ b/module/system/repl/command.scm
@@ -53,6 +53,7 @@
(module (module m) (import use) (load l) (reload re) (binding b) (in))
(language (language L))
(compile (compile c) (compile-file cc)
+ (expand exp) (optimize opt)
(disassemble x) (disassemble-file xx))
(profile (time t) (profile pr) (trace tr))
(debug (backtrace bt) (up) (down) (frame fr)
@@ -459,6 +460,20 @@ Generate compiled code."
Compile a file."
(compile-file (->string file) #:opts opts))
+(define-meta-command (expand repl (form))
+ "expand EXP
+Expand any macros in a form."
+ (let ((x (repl-expand repl (repl-parse repl form))))
+ (run-hook before-print-hook x)
+ (pp x)))
+
+(define-meta-command (optimize repl (form))
+ "optimize EXP
+Run the optimizer on a piece of code and print the result."
+ (let ((x (repl-optimize repl (repl-parse repl form))))
+ (run-hook before-print-hook x)
+ (pp x)))
+
(define (guile:disassemble x)
((@ (language assembly disassemble) disassemble) x))