This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Ticket 504: The treatment of sequences is still flawed

2013-07-07 03:20:44
WG1 - Core
2013-05-13 07:52:23

Jussi Piitulainen writes:

I appreciate that a model interface for sequence procedures was worked out, but the attempt to "round out" things for all sequence types failed: a new sequence type was introduced without such procedures, all these procedure may not be equally appropriate for all sequence types - such rounding up was considered ages ago and rejected then, and the absence of mixed-type procedures is now awkward. Scheme fails to express the underlying abstraction. The main harm of all these procedures is that they take up space in the report.

Bytevectors aren't quite a sequence type in themselves: they are an underlying mechanism for implementing various sequence types such as u8vectors, s8vectors, u16vectors, etc. etc; see NumericVectorsCowan for a fully worked out proposal for R7RS-large. Of these, u8vectors are the simplest; consequently, they are treated as primitive and included in R7RS-small as well. The result is necessarily imperfect.

The point about mixed-type procedures is a strong one, but such procedures could easily be layered on top of what we have. That is the advantage of Scheme's "relentless monomorphism"; you can design your own polymorphic system on top of it however you want, with whatever coercion rules make the most sense to you. If one such system is eventually seen to be full of win, it can be standardized in future.


The WG decided by unanimous consent to take no action on this ticket.