-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Marc Feeley wrote:
The Scheme community will fragment and Scheme innovation will slowly die.
Are we not already fragmented?
There is no agreed upon standard way to even load SRFIs.
SRFI-55 [http://srfi.schemers.org/srfi-55/srfi-55.html] defines require-extension to provide this functionality. Below you will find a simple test. Note in particular that Bigloo, Gambit and MzScheme all fail to provide this functionality, just like ELK, mit-scheme and scm. Only Chicken, Gauche, Guile and stklos pass. I was under the impression that R6RS aimed to solve this problem (but I may be wrong) and I am willing to swallow whatever else has been put in if it does.
Marijn
Test-results of running:
echo "(display "hello world")(newline)(require-extension (srfi 1))(display (make-list 4 'c))(newline)" | ./interpret
[interpret is a custom script of mine, to help me test multiple Schemes easily]
bigloo: hello world *** ERROR:eval: Unbound variable (from top-level) -- require-extension
chicken: hello world (c c c c)
elk: hello world begin: unbound variable: require-extension gambit: hello world *** ERROR IN (string)@1.5 -- Unbound variable: require-extension gauche: hello world (c c c c)
guile: hello world (c c c c)
mit-scheme: hello world ;Unbound variable: srfi ;To continue, call RESTART with an option number: ; (RESTART 3) => Specify a value to use instead of srfi. ; (RESTART 2) => Define srfi to a given value. ; (RESTART 1) => Return to read-eval-print level 1.
2 error> End of input stream reached. mzscheme: hello world reference to undefined identifier: require-extension scm: hello world
;ERROR: eval: unbound variable: require-extension ; in expression: (require-extension (srfi 1)) ; in top level environment. ; defined by eval
;STACK TRACE 1; (#@begin (#@display "hello world") (#@newline) (require-extens ... 2; ((#@thunk) (set! complete #t)) 3; ((#@require (#@quote string-port)) (#@do-thunk (#@lambda () (( ... 4; ((#@case #@option #(#<unspecified> #f #? #: #\n #\u #\m #\s ... 5; ((#@cond ((#@not #@*argv*) (#@set! #@*argv* (#@program-argumen ...
; program args: ("scm" "-e" "(begin (display "hello world")(newline)(require-extension (srfi 1))(display (make-list 4 'c))(newline) (newline))") stklos with full-syntax: hello world (c c c c)
stklos: hello world (c c c c)