diff --git a/module/system/repl/command.scm b/module/system/repl/command.scm index 7708628c8..328207b32 100644 --- a/module/system/repl/command.scm +++ b/module/system/repl/command.scm @@ -206,7 +206,9 @@ Quit this session." Change modules / Show current module." (pmatch args (() (puts (module-name (current-module)))) - ((,mod-name) (set-current-module (resolve-module mod-name))))) + ((,mod-name) (guard (list? mod-name)) + (set-current-module (resolve-module mod-name))) + (,mod-name (set-current-module (resolve-module mod-name))))) (define (import repl . args) "import [MODULE ...] diff --git a/module/system/repl/repl.scm b/module/system/repl/repl.scm index 01f6ed430..20155c753 100644 --- a/module/system/repl/repl.scm +++ b/module/system/repl/repl.scm @@ -105,8 +105,10 @@ (let ((repl (make-repl lang))) (repl-welcome repl) (let prompt-loop () - (let ((exp (prompting-meta-read repl))) + (let ((exp (call-with-backtrace + (lambda () (prompting-meta-read repl))))) (cond + ((eqv? exp (if #f #f))) ; read error, pass ((eq? exp meta-command-token) (call-with-backtrace (lambda ()