[plt-scheme] symbols redefined in SRFIs

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Oct 23 18:37:21 EDT 2006

At Tue, 24 Oct 2006 01:26:21 +0300, "Dan Muresan" wrote:
> Now, how is mzscheme reverse! different from SRFI-1 reverse! ? I see
> no inherent reasons for two different versions. Do you? SRFI-1 doesn't
> mandate the usage of its reference implementation, in case you want to
> mention "native vs. Scheme".

No, I don't think the SRFI's `reverse!' is different than MzScheme's.
If I'm not overlooking anything, then, that particular conflict could
be avoided by re-exporting MzScheme's `reverse!' from "1.ss".

The `assoc' problem could be addressed by extending MzScheme's `assoc',
and then dropping the same thing as `reverse!'. The same for `member'.

The `map' and `for-each' cases are slightly more tricky. MzScheme's
`map' reports an error when the argument lists are not all the same
length, whereas SRFI-1's variants allow it. In those cases, the change
to MzScheme's versions may be undesirable; I'm not sure.

Meanwhile, there are plenty of other libraries with less easily
resolved conflicts. SRFI-13 has a good example: MzScheme's
`string-upcase' is consistent with draft R6RS rather than SRFI-13, and
we definitely want MzScheme's the way it is.

Given the inevitability of true conflicts with SRFIs, we have so far
not tried to finesse the problems with SRFI-1 specifically. If SRFI-1
is really special, though, we can consider it.


Posted on the users mailing list.