Re-export R7RS string procedures
taylanbayirli@xxxxxx
(21 Apr 2016 11:40 UTC)
|
Re: Re-export R7RS string procedures John Cowan (21 Apr 2016 16:21 UTC)
|
Re: Re-export R7RS string procedures
taylanbayirli@xxxxxx
(21 Apr 2016 16:33 UTC)
|
Re: Re-export R7RS string procedures
John Cowan
(21 Apr 2016 17:03 UTC)
|
Re: Re-export R7RS string procedures
taylanbayirli@xxxxxx
(21 Apr 2016 17:46 UTC)
|
Re: Re-export R7RS string procedures John Cowan 21 Apr 2016 16:21 UTC
Taylan Ulrich Bayırlı/Kammer scripsit: > I think it would be better if it re-exported string-related procedures > in R7RS. That way, one can import the SRFI without importing the R7RS > base and still get a full-fledged string library. (Maybe one has an > alternative to (scheme base), some sort of DSL.) Running without a base of some sort, whether (scheme r5rs), (rnrs base), or (scheme base), is a pretty specialized use case that I think could be safely left to local adaptation. If you have an R6RS or R7RS style library system, you can always import just the procedures you want. The only new string-related procedures in R7RS are string-map, string-for-each, string->vector, vector->string, and string-copy!, each of which is trivial and none of which are required by the portable implementation. In addition, some R7RS string procedures support start/end arguments even though their R5RS counterparts do not. The fact that SRFI 1 theoretically exports primitives like car, cdr, and cons, as well as non-primitive but overwhelmingly common procedures like length, has never been anything but a theoretical wart and a practical nuisance. SRFI 13 excludes R5RS `string=?` (it has a different procedure for string equality), and there was a lot of confusion on the SRFI 13 mailing list about whether conforming to SRFI 13 required removing or hiding `string=?` from one's implementation (this is before library systems were commonplace in Schemes). If (as I assume) SRFI 1 becomes the (scheme list) library in R7RS-large, I will add a note saying that the R7RS-small procedures are not imported by (import (scheme list)). At some point someone should write a portable and comprehensive R7RS shim that provides every procedure in the R7RS library using only the R5RS library, analogous to the various syntax expanders. At the moment, most of my SRFI sample implementations are written in R7RS but come with minimal shims that provide what is needed to let them run on Chicken at least: adaptation to other R5RS+ systems should be straightforward. -- John Cowan http://www.ccil.org/~cowan xxxxxx@ccil.org "But I am the real Strider, fortunately," he said, looking down at them with his face softened by a sudden smile. "I am Aragorn son of Arathorn, and if by life or death I can save you, I will."