diff --git a/module/language/r5rs/spec.scm b/module/language/r5rs/spec.scm index ed1096b09..98b6e9dcd 100644 --- a/module/language/r5rs/spec.scm +++ b/module/language/r5rs/spec.scm @@ -20,7 +20,6 @@ ;; Boston, MA 02111-1307, USA. (define-module (language r5rs spec) - :use-module (system base module) :use-module (system base language) :use-module (language r5rs expand) :use-module (language r5rs translate) @@ -33,5 +32,5 @@ :expander expand :translator translate :printer write - :environment (global-ref 'Language::R5RS::core) +;; :environment (global-ref 'Language::R5RS::core) ) diff --git a/module/language/r5rs/translate.scm b/module/language/r5rs/translate.scm index 6e21ec106..5bf18758b 100644 --- a/module/language/r5rs/translate.scm +++ b/module/language/r5rs/translate.scm @@ -26,6 +26,9 @@ (define (trans x) (if (pair? x) (trans-pair x) x)) +(define *primitive-procedure-list* + '(void car cdr cons + - * / < >)) + (define (trans-pair x) (let ((name (car x)) (args (cdr x))) (let ((il (case name @@ -41,7 +44,11 @@ ((lambda) (cons* '@lambda (trans-formals (car args)) (map trans (cdr args)))) - (else (cons (trans name) (map trans args))))) + (else + (if (memq name *primitive-procedure-list*) + ;; FIXME: Temporary hack for direct optimization + (cons (symbol-append '@ name) (map trans args)) + (cons (trans name) (map trans args)))))) (props (source-properties x))) (if (not (null? props)) (set-source-properties! il props)) diff --git a/module/system/base/language.scm b/module/system/base/language.scm index 6e22398d7..42e306e44 100644 --- a/module/system/base/language.scm +++ b/module/system/base/language.scm @@ -22,7 +22,6 @@ (define-module (system base language) :use-module (oop goops) :use-syntax (system base syntax) - :use-module (system base module) :use-module (system il compile) :use-module (system vm core) :use-module (system vm assemble)