Range procedures
John Cowan
(24 Jan 2016 21:35 UTC)
|
Re: Range procedures
Per Bothner
(25 Jan 2016 00:26 UTC)
|
Re: Range procedures
Kevin Wortman
(25 Jan 2016 21:35 UTC)
|
Re: Range procedures
John Cowan
(30 Jan 2016 18:16 UTC)
|
Re: Range procedures John Cowan (29 Jan 2016 01:57 UTC)
|
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>