Per is committed to a classical OO implementation of Scheme, so of course monomorphism seems just an annoyance to him.  But I concluded a decade ago that there will never be a consensus on the One True OO System (which is why I have ruled out standardizing any of them in R7RS-large (modulo an appeal)), and still less on the One True Class Hier/Heterarchy.  As long as the names are kept as consistent as possible, I don't think having lots of them is a burden on the mind, though it may be a burden on the fingers.  In addition, fast-generics from Chicken and particular typeclasses should help.

You made the right call IMHO.

        I wouldn't suggest splitting this collection. It just has to be
        anarchic enough so that there is no bias towards certain idioms.

Well, let us say, to minimize bias.  One of the reasons for having so many SRFIs with the same procedures over and over is to help with the problem of "Oh, data structure X is perfect for what I want to do, but it has so few (or no) procedures (that I would have to write myself) that I'll just use lists instead, which have lots of procedures."

It's true that a large language should have lots of convenience procedures (Mathematica is probably the most extreme example of this).

But unless I misunderstood him, Marc was making a different, orthogonal point: that there should be a separation between "core" procedures that are required for an efficient and portable implementation of the functionality, and "convenience" procedures that can be implemented fully in portable code by relying on the not-efficiently-portable "core". The convenience procedures are much more subject to taste than the core ones, so they could benefit from a different release process, with possibly more than one group working on a user-friendly "skin" on the core stuff.

For example, there could be a monomorphic skin with different procedures for each data structurem and another OO-style polymorphic skin such as Kawa would like. Also a functional skin and an imperative skin, etc.

If SRFIs dealt mainly with the core stuff, the design work involved ought to be less controversial (e.g. the things required to implement an efficient data structure can be figured out from CS textbooks and studying known performance characteristics of different virtual machines) and we'd arrive at a minimal portable API on top of which other projects could build.

Reply via email to