~ chicken-core (chicken-5) d245c1cd4cad4d93cddb2e5120beb71fd23a8798
commit d245c1cd4cad4d93cddb2e5120beb71fd23a8798 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Wed Feb 3 00:25:14 2016 +1300 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Tue Mar 8 22:52:34 2016 +1300 Load chicken-syntax for eval and add modules for all built-in SRFIs diff --git a/eval.scm b/eval.scm index e17dbdca..a3e36153 100644 --- a/eval.scm +++ b/eval.scm @@ -27,7 +27,7 @@ (declare (unit eval) - (uses expand internal modules) + (uses chicken-syntax expand internal modules) (not inline ##sys#alias-global-hook ##sys#user-read-hook ##sys#syntax-error-hook)) #> diff --git a/expand.scm b/expand.scm index 34d03041..2c6e3317 100644 --- a/expand.scm +++ b/expand.scm @@ -83,6 +83,12 @@ ;;XXX should this be in eval.scm? (define ##sys#active-eval-environment (make-parameter ##sys#current-environment)) +(define (##sys#primitive-alias sym) + (let ((alias (##sys#string->symbol + (##sys#string-append "#%" (##sys#slot sym 1))))) + (putp alias '##core#primitive sym) + alias)) + (define (lookup id se) (cond ((##core#inline "C_u_i_assq" id se) => cdr) ((getp id '##core#macro-alias)) diff --git a/modules.scm b/modules.scm index 226cb418..8dce32ef 100644 --- a/modules.scm +++ b/modules.scm @@ -51,9 +51,6 @@ (cons (car a) (if (symbol? (cdr a)) (cdr a) '<macro>))) se)) -(define-inline (se-subset names env) - (map (cut assq <> env) names)) - (define-inline (getp sym prop) (##core#inline "C_i_getprop" sym prop #f)) @@ -392,13 +389,6 @@ (set! ##sys#module-table (cons (cons name mod) ##sys#module-table)) mod)) -(define (##sys#primitive-alias sym) - (let ((palias - (##sys#string->symbol - (##sys#string-append "#%" (##sys#slot sym 1))))) - (putp palias '##core#primitive sym) - palias)) - (define (##sys#register-core-module name lib vexports #!optional (sexports '())) (let* ((me (##sys#macro-environment)) (mod (make-module @@ -970,21 +960,60 @@ (##sys#register-module-alias 'time 'chicken.time) (##sys#register-module-alias 'utils 'chicken.utils) -;; built-in SRFIs -;; todo 2 8 9 11 12 15 16 28 39 8 9 11 15 16 17 26 31 -;; noop 46 61 62 +(define-inline (se-subset names env) (map (cut assq <> env) names)) (##sys#register-primitive-module 'srfi-0 '() (se-subset '(cond-expand) ##sys#default-macro-environment)) (##sys#register-primitive-module - 'srfi-6 '(open-input-string open-output-string get-output-string)) + 'srfi-2 '() (se-subset '(and-let*) ##sys#chicken-macro-environment)) + +(##sys#register-core-module + 'srfi-6 'library '(open-input-string open-output-string get-output-string)) + +(##sys#register-primitive-module + 'srfi-8 '() (se-subset '(receive) ##sys#chicken-macro-environment)) + +(##sys#register-primitive-module + 'srfi-9 '() (se-subset '(define-record-type) ##sys#chicken-macro-environment)) + +(##sys#register-core-module + 'srfi-10 'read-syntax '((define-reader-ctor . chicken.read-syntax#define-reader-ctor))) + +(##sys#register-primitive-module + 'srfi-11 '() (se-subset '(let-values let*-values) ##sys#chicken-macro-environment)) + +(##sys#register-core-module + 'srfi-12 'library + '(abort condition? condition-predicate condition-property-accessor + current-exception-handler make-composite-condition make-property-condition + signal with-exception-handler) + (se-subset '(handle-exceptions) ##sys#chicken-macro-environment)) + +(##sys#register-primitive-module + 'srfi-15 '() (se-subset '(fluid-let) ##sys#chicken-macro-environment)) (##sys#register-primitive-module - 'srfi-10 '((define-reader-ctor . chicken.read-syntax#define-reader-ctor))) + 'srfi-16 '() (se-subset '(case-lambda) ##sys#chicken-macro-environment)) + +(##sys#register-primitive-module + 'srfi-17 '() (se-subset '(set!) ##sys#default-macro-environment)) + +(##sys#register-core-module + 'srfi-23 'library '(error)) (##sys#register-primitive-module - 'srfi-23 '(error)) + 'srfi-26 '() (se-subset '(cut cute) ##sys#chicken-macro-environment)) + +(##sys#register-core-module + 'srfi-28 'extras '((format . chicken.format#format))) + +(##sys#register-primitive-module + 'srfi-31 '() (se-subset '(rec) ##sys#chicken-macro-environment)) + +(##sys#register-core-module + 'srfi-39 'library '(make-parameter) + (se-subset '(parameterize) ##sys#chicken-macro-environment)) (##sys#register-primitive-module 'srfi-55 '() (se-subset '(require-extension) ##sys#default-macro-environment))Trap