From 4684239efa63dc1b2c1cbe37ef7d3062029f5532 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:40 -0800 Subject: Import Upstream version 3b1 --- vscm.init | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'vscm.init') diff --git a/vscm.init b/vscm.init index d005c7e..d6e48d3 100644 --- a/vscm.init +++ b/vscm.init @@ -55,11 +55,15 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/local/src/scheme/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "VSCM_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) "/usr/local/src/scheme/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + (else ""))))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -123,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))))) @@ -164,6 +167,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -171,7 +175,7 @@ ;;; eval ;R5RS two-argument eval values ;R5RS multiple values ;;; dynamic-wind ;R5RS dynamic-wind -;;; macro ;R5RS high level macros + macro ;R5RS high level macros delay ;has DELAY and FORCE multiarg-apply ;APPLY can take more than 2 args. ;;; char-ready? @@ -206,7 +210,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. @@ -387,10 +391,6 @@ ;;; SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -427,7 +427,6 @@ (define (defmacro:load ) (slib:eval-load defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -486,4 +485,12 @@ ;;; 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")) -- cgit v1.2.3