diff options
Diffstat (limited to 'jscheme.init')
-rw-r--r-- | jscheme.init | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/jscheme.init b/jscheme.init index 9e568b7..9a0f0e6 100644 --- a/jscheme.init +++ b/jscheme.init @@ -39,19 +39,20 @@ ;;; the version the scheme implementation loading this file. (define (scheme-implementation-version) "7.2") +(define (getenv path) + (define prop (System.getProperty path)) + (and (not (eq? prop #null)) prop)) + ;;@ (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. (define implementation-vicinity - (let ((implvic (case (software-type) - ((ms-dos) "C:\\TEMP\\") - (else "/tmp/")))) + (let ((implvic (or (getenv "JSCHEME_IMPLEMENTATION_PATH") + (case (software-type) + ((ms-dos) "C:\\TEMP\\") + (else "/tmp/"))))) (lambda () implvic))) -(define (getenv path) - (define prop (System.getProperty path)) - (and (not (eq? prop #null)) prop)) - (define (slib.zip-on-classpath?) (let loop ((urls (vector->list (.getURLs (Import.getClassLoader))))) (if (null? urls) #f @@ -126,8 +127,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -167,6 +167,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -211,7 +212,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -337,10 +338,6 @@ ((zero? z2) (+ 1 (* z1 z2))) (else (expt z1 z2)))))) -;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define (constant? exp) (if (pair? exp) (eq? (car exp) 'quote) (not (symbol? exp)))) @@ -428,7 +425,6 @@ ;@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" ;@ (define slib:warn @@ -511,6 +507,14 @@ ;;@ At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) (define (current-time) (/ (System.currentTimeMillis) 1000)) |