~ 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