diff --git a/mes/module/mes/boot-6.mes b/mes/module/mes/boot-6.mes index 0eaade29..391e6968 100644 --- a/mes/module/mes/boot-6.mes +++ b/mes/module/mes/boot-6.mes @@ -161,29 +161,30 @@ ;; triggers for code evaluated at the top-level, for example from the ;; REPL or when loading a file. -(define-macro (eval-case exp env) - `(begin - (define (toplevel-env? env) - (or (not (pair? env)) (not (pair? (car env))))) - (define (syntax) - (error "syntax error in eval-case")) - (let loop ((clauses (cdr ',exp))) - (cond - ((null? clauses) - #f) - ((not (list? (car clauses))) - (syntax)) - ((eq? 'else (caar clauses)) - (or (null? (cdr clauses)) - (syntax)) - (cons 'begin (cdar clauses))) - ((not (list? (caar clauses))) - (syntax)) - ((and (toplevel-env? ,env) - (memq 'load-toplevel (caar clauses))) - (cons 'begin (cdar clauses))) - (else - (loop (cdr clauses))))))) +(define-macro (eval-case . exp) + (let ((env #t)) ; XXX TODO: get current-env from eval-apply + `(begin + (define (toplevel-env? env) + (or (not (pair? env)) (not (pair? (car env))))) + (define (syntax) + (error "syntax error in eval-case")) + (let loop ((clauses ',exp)) + (cond + ((null? clauses) + #f) + ((not (list? (car clauses))) + (syntax)) + ((eq? 'else (caar clauses)) + (or (null? (cdr clauses)) + (syntax)) + (cons 'begin (cdar clauses))) + ((not (list? (caar clauses))) + (syntax)) + ((and (toplevel-env? ,env) + (memq 'load-toplevel (caar clauses))) + (cons 'begin (cdar clauses))) + (else + (loop (cdr clauses)))))))) @@ -1957,10 +1958,14 @@ (force-output cep) (throw 'abort key))) +(define core:exit exit) (define (quit . args) (apply throw 'quit args)) -(define exit quit) +;; FIXME: how does Guile exit 0? +;; this gives +;; unhandled exception: error: (("option must be specified with argument:" "main")) +;;(define exit quit) ;;(define has-shown-backtrace-hint? #f) Defined by scm_init_backtrace () @@ -2234,7 +2239,7 @@ compiled-args) (cddr args)))))) -;; (defmacro define-module args +;; (define-macro (define-module . args) ;; `(eval-case ;; ((load-toplevel) ;; (let ((m (process-define-module @@ -2421,6 +2426,9 @@ ;; (else ;; (error "re-export can only be used at the top level")))) +(define-macro (re-export . names) + `(module-re-export! (guile:current-module) ',names)) + ;; (defmacro export-syntax names ;; `(export ,@names))