From 02ed0d3df2607c5d78fbc38cbb82a65df1bc7080 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 9 Sep 2008 07:54:23 +0200 Subject: [PATCH] add repl option to interpret rather than compile * module/language/scheme/spec.scm (scheme): Specify an evaluator, `eval'. * module/system/repl/common.scm (repl-default-options): Add option, `interp', specifying that, if possible, the repl should interpret its expressions rather than compile them. Defaults to #f. --- module/language/scheme/spec.scm | 1 + module/system/repl/common.scm | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/module/language/scheme/spec.scm b/module/language/scheme/spec.scm index 263621a3d..2c9bc4fb6 100644 --- a/module/language/scheme/spec.scm +++ b/module/language/scheme/spec.scm @@ -46,5 +46,6 @@ #:reader read #:read-file read-file #:translator translate + #:evaluator eval #:printer write ) diff --git a/module/system/repl/common.scm b/module/system/repl/common.scm index edfb81500..608c38577 100644 --- a/module/system/repl/common.scm +++ b/module/system/repl/common.scm @@ -38,7 +38,8 @@ (define-record ( vm language options tm-stats gc-stats vm-stats)) (define repl-default-options - '((trace . #f))) + '((trace . #f) + (interp . #f))) (define %make-repl make-repl) (define (make-repl lang) @@ -68,7 +69,9 @@ (define (repl-eval repl form) (let ((eval (language-evaluator (repl-language repl)))) - (if eval + (if (and eval + (or (not (language-translator (repl-language repl))) + (assq-ref (repl-options repl) 'interp))) (eval form (current-module)) (vm-load (repl-vm repl) (repl-compile repl form)))))