Email list hosting service & mailing list manager

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 taylanbayirli@xxxxxx 21 Apr 2016 16:33 UTC

John Cowan <xxxxxx@mercury.ccil.org> writes:

> 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.

I don't understand what R5RS has to do with this...

What's the problem with re-exporting base bindings?  Importing the same
binding from two libraries is not an error in R7RS.  Maybe SRFI 1 was
too optimistic for its time, but given R7RS library semantics it seems
like the right thing.

Taylan