Flexvectors vs subtyping Per Bothner 08 Oct 2020 17:23 UTC

I accidentally replied the following to just Arthur, but meant to send it to a wider audience:

     I've said it before, and I'll said it again: Having all these distinct datatypes
     with distinct APIs and no subtyping is bonkers.

     Nothing against this particular SRFI, which is just another
     example of a bad approach to design a language.   Common Lisp did this
     much better in 1984.

Arthur agreed that "we should [probably] have a subtyping mechanism",
and encouraged proposals along these lines.  However, there is no point
unless these are a significant number of users and implementors who feel the same.

This means not just designing an API for defining types and classes,
but also re-thinking and slimming down SRFI 214 and a dozen collection
APIs to make use of sub-typing.

I believe there is no point in continuing with r7rs-large on its current course
without sub-typing; I think it is doomed to sink under its own weight.

FWIW, Kawa's define-class/define-simple-class has the necessary functionality,
but the syntax (based on Common Lisp) may not be to everyone's liking,
and it has more tweaks and features than makes sense for a standard:
https://www.gnu.org/software/kawa/Defining-new-classes.html

What is needed IMO is a way to define "types" (interfaces)
with multiple inheritance of methods (with optional default implementation),
and no fields; and concrete "classes" that implement interfaces,
have fields, and (probably) no inheritance.
--
	--Per Bothner
xxxxxx@bothner.com   http://per.bothner.com/