Re: Range procedures John Cowan 29 Jan 2016 01:57 UTC

Per Bothner scripsit:

> Personally, I'd rather migrate to using abstract sequences (as in
> Common Lisp), and have ranges be a kind of sequence.

This would be an extremely sweeping change to Scheme as a whole.
Attempts to add polymorphism to Scheme been successful within single
implementations like Gauche and Kawa, where they can be done from the
ground up, but the Scheme standards have always been relentlessly
monomorphic.  Other than true universal polymorphism (like cons) and
pseudo-universal polymorphism-by-cases (like write and display), the
only real polymorphism in Scheme is between exact and inexact numbers,
which is inherited from MacLisp anyway, and is supplemented in R6RS
and in many Schemes with exact-specific (or fixnum-specific) and
inexact-specific arithmetic.

So yes, a large R7RS system will have a lot of extremely monomorphic
procedure names.  However, it is possible to build your own polymorphism
on top of it, either using classes or prototypes, or with reified
type classes (SRFI 114/128 comparators are an example) or through
predicate generic functions (which I hope will be in R7RS-large),
without being stuck with one particular type lattice defined by the
language specifiers.  A nice thing about making comparators reified
(unlike Haskell's Eq and Ord) is that it does not conflate types and
orders: you can semi-independently specify the type test predicate and
the equality and ordering predicates.

--
"Well, I'm back."  --Sam        John Cowan <xxxxxx@ccil.org>