diff --git a/module/mes/repl.mes b/module/mes/repl.mes index b59f2bb5..ae928c45 100644 --- a/module/mes/repl.mes +++ b/module/mes/repl.mes @@ -161,7 +161,7 @@ along with Mes. If not, see . (loop (mes-load-module-env (cadr sexp) a)) (let ((e (if (and (pair? sexp) (eq? (car sexp) (string->symbol "unquote"))) (meta (cadr sexp) a) - (eval sexp a)))) + (core:eval-expand sexp a)))) (if (eq? e *unspecified*) (loop a) (let ((id (string->symbol (string-append "$" (number->string count))))) (set! count (+ count 1)) diff --git a/src/mes.c b/src/mes.c index fa68ddeb..fd2f457f 100644 --- a/src/mes.c +++ b/src/mes.c @@ -207,7 +207,7 @@ struct scm scm_vm_begin_expand_primitive_load = {TSPECIAL, "*vm:core:begin-expan struct scm scm_vm_begin_primitive_load = {TSPECIAL, "*vm:core:begin-primitive-load*",0}; struct scm scm_vm_macro_expand_car = {TSPECIAL, "*vm:core:macro-expand-car*",0}; struct scm scm_vm_macro_expand_cdr = {TSPECIAL, "*vm:macro-expand-cdr*",0}; -struct scm scm_vm_begin_expand = {TSPECIAL, "*vm:begin-expand*",0}; +struct scm scm_vm_begin_expand = {TSPECIAL, "core:eval-expand",0}; struct scm scm_vm_begin_expand_eval = {TSPECIAL, "*vm:begin-expand-eval*",0}; struct scm scm_vm_begin_expand_macro = {TSPECIAL, "*vm:begin-expand-macro*",0}; struct scm scm_vm_begin = {TSPECIAL, "*vm-begin*",0}; @@ -1040,6 +1040,11 @@ eval_apply () push_cc (CADR (r1), r1, CADDR (r1), cell_vm_return); goto eval; } + case cell_vm_begin_expand: + { + push_cc (cons (CADR (r1), cell_nil), r1, CADDR (r1), cell_vm_return); + goto begin_expand; + } case cell_call_with_current_continuation: { r1 = CDR (r1);