seeds Alex Shinn (08 Oct 2015 05:03 UTC)
Re: seeds taylanbayirli@xxxxxx (08 Oct 2015 07:55 UTC)
Re: seeds Arthur A. Gleckler (08 Oct 2015 17:46 UTC)
Re: seeds taylanbayirli@xxxxxx (08 Oct 2015 19:38 UTC)
Re: seeds Arthur A. Gleckler (08 Oct 2015 21:47 UTC)
Re: seeds taylanbayirli@xxxxxx (09 Oct 2015 08:09 UTC)
Re: seeds Kevin Wortman (09 Oct 2015 17:18 UTC)
Re: seeds taylanbayirli@xxxxxx (09 Oct 2015 18:33 UTC)
Re: seeds Kevin Wortman (13 Oct 2015 17:36 UTC)
Re: seeds taylanbayirli@xxxxxx (13 Oct 2015 18:28 UTC)
Re: seeds Alex Shinn (14 Oct 2015 01:59 UTC)
Re: seeds taylanbayirli@xxxxxx (14 Oct 2015 09:17 UTC)
Re: seeds taylanbayirli@xxxxxx (14 Oct 2015 10:06 UTC)
Re: seeds Alex Shinn (16 Oct 2015 01:23 UTC)
Re: seeds taylanbayirli@xxxxxx (16 Oct 2015 13:34 UTC)
Re: seeds Alex Shinn (16 Oct 2015 23:48 UTC)
Re: seeds taylanbayirli@xxxxxx (17 Oct 2015 12:08 UTC)
Re: seeds Alex Shinn (17 Oct 2015 13:12 UTC)
Re: seeds taylanbayirli@xxxxxx (17 Oct 2015 14:09 UTC)
What SRFIs are for John Cowan (17 Oct 2015 14:41 UTC)
Re: What SRFIs are for taylanbayirli@xxxxxx (17 Oct 2015 15:56 UTC)
Re: What SRFIs are for John Cowan (17 Oct 2015 16:55 UTC)
Re: What SRFIs are for taylanbayirli@xxxxxx (17 Oct 2015 18:08 UTC)
Re: What SRFIs are for John Cowan (17 Oct 2015 18:51 UTC)
Re: seeds John Cowan (15 Oct 2015 17:49 UTC)
Re: seeds Alex Shinn (09 Oct 2015 02:54 UTC)
Re: seeds taylanbayirli@xxxxxx (09 Oct 2015 07:59 UTC)
Re: seeds John Cowan (15 Oct 2015 17:51 UTC)
Re: seeds taylanbayirli@xxxxxx (15 Oct 2015 23:08 UTC)
Re: seeds John Cowan (16 Oct 2015 13:09 UTC)
Re: seeds taylanbayirli@xxxxxx (16 Oct 2015 14:01 UTC)

Re: What SRFIs are for John Cowan 17 Oct 2015 16:55 UTC

Taylan Ulrich Bayırlı/Kammer scripsit:

> Firstly, R5RS didn't have libraries.

It didn't have formal library machinery, but it certainly had libraries.
Consider the SRFI 1 library.

> Secondly, lists are fundamental to Scheme on a deep level, as for
> instance (lambda (foo bar . rest) ...) will use a list to represent
> the rest arguments.

I consider that a trivial use of lists.  In Racket, lists are replaced
by immutable lists in this use.  It would not seriously derange the
character of Scheme to use an opaque object instead, or even to limit
the consumption of rest-arguments to specialized syntax which forces
procedures to either consume all their arguments individually or to
tail-pass unconsumed ones to another such procedure.  (I thought Henry
Baker had written this idea up, but I can't find it.)  That allows you
to just put the arguments on a calling stack without consing.

Not that I would propose this -- it's not Scheme.  I'm just trying to
show that the supposed specialness of lists is a historical artifact,
not something inherent to lists.

> You don't want to have a core pair API and let the lists API be a
> third-party library

No.  But on your principles you seem content to let a few list
procedures be standardized and leave other extremely useful ones in an
unstandardized library.  I approve of SRFI 1 being standardized, and I
want to see it become part of the R7RS-large standard, because I think
it should receive the same treatment as the R7RS-small list API (modulo
import statements).

> pair?/cons/car/cdr can't be implemented sanely in portable library
> code,

Actually, they can be: on top of SRFI 9.

> This can be contrasted to SRFI-113, which isn't fundamental in any
> way,

I still don't understand this claim.  Why aren't sets every bit as
fundamental to programming as hash tables are?  It's true that they can
be implemented on top of hash tables, but SRFI 113 does not require
this.  For that matter, in ImmutableDataStructuresWortman maps are
implemented on top of sets.

> There is no reason to spend time on its specification as a standard
> because it has nothing to gain from being in a standard.

Specifications never have anything to gain from being in a standard.  It
is we, the programmers, who gain from having fundamental data structures
as part of our standards, for the reasons I have given.  Even if lists
were not wired into the Scheme calling convention, they would still be
fundamental data structures.

> I don't want the API of this library to ever become a standard,
> because it has nothing to gain from it, and it would entail the risk
> of standardizing a bad API.

I, on the other hand, do want it or something like it (modulo pointers)
to become part of a standard.  C-compatible structures are another
fundamental data type, and programmers should have them available.

As for standardizing bad APIs, the only way to overcome that risk is
never to change the standard at all, and simply declare that existing
APIs are good by fiat.  There is an argument that on modern systems,
linked lists are a bad API and shouldn't exist, but I don't care: if
code containing them is a problem for you, don't use them.

> Why expect systems to individually support SRFI-113, when any user can
> just download the de-facto sets&bags library from snow-fort.org?

Maybe this is where we are talking past one another.  As far as I am
concerned, saying "To support (scheme sets), download the implementation
from snow-fort.org" *counts* as individually supporting SRFI 113.  If
that didn't work, however, then the implementation could not claim to
support R7RS-large (assuming that included SRFI 113).

> The portable SRFI-69 implementation is bad because it tries to
> implement a feature in Scheme which should be implemented on the low
> level.

That's an implementation-specific perception.  Implementers have limited
time and energy, and if they choose not to provide implementation-specific
machinery to do hash tables, that's a valid choice.  Efficiency is not
a divinely required attribute of implementations.

--
John Cowan          http://www.ccil.org/~cowan        xxxxxx@ccil.org
Real FORTRAN programmers can program FORTRAN in any language.  --Ed Post