-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Inconsistencies in the Spec about class #23318
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hey, can you link specific sections? |
I don't detect the imprecision. The section on linearization distinguishes "linearization of a class" and "linearization of mixins", but maybe it could say "linearization of a subclass" instead, for clarity. The "published" spec calls itself 3.4 but includes latest edits. (I don't know the workflow.) |
Oh, now that's worrying... 🤔 |
The specification is synchronized on each commit to main (merged PR) - it's uploaded to LAMP server building all scala-lang websites The version showed and the endpoint upon which it would be available is controlled by config Lines 1 to 3 in 0be2091
Currently these are pointing to 3.4. We can change these, but it would also require additional changes on docs.scala-lang becuse the link to specification is hardcoded : https://github.com/scala/docs.scala-lang/blob/2b612762460ecde204d54fd2afcbd5d77d06fc78/index.md?plain=1#L72-L75 Probably it would be the best to change config and update entry in docs.scala-lang. There is no switch for different versions of specification on that side, but the old versions should still be reachable by links (unless when syncing these would be overrdined, we'd need to confirm that) I think there is also one more problem - the specification is showing the state of main branch so nightly releases. I belive it would be better if spec would be synced only on stable releases. That's what we do with reference docs. |
Maybe for people familiar with CLOS or its predecessor Flavors, the word "mixin" will help, but otherwise "trait" and "mixin" are synonyms from Smalltalk vs Lisp traditions, and it doesn't help much to define one by the other. Worse than that: since 1990s, the term "mixin" has been repurposed in programming language research to mean something more primitive (in a good way) (see Bracha and Cook 1990 on Mixin Inheritance). Also, furgossake, your language has a special distinct keywords for
Uh, the linearization is a list of a class's superclasses. If it contained only classes strictly speaking, it would be trivial, but if you call class-or-trait "mixin" then yes that works. Flavors (Cannon 1979, Moon 1986) just calls the list an ordering, and the word linearization is introduced later (though the concept is already in flavors). It's called the "class precedence list" in CLOS. SIMULA has a corresponding concept of "prefix sequence" in the same most-to-least-specific order interestingly, though it's a bit trivial since SIMULA only has single inheritance (the word "inheritance" does not exist in SIMULA though, it was introduced by KRL in 1975 and only the multiple kind at the time; Kay distinguishes single vs multiple inheritance in 1976 when he has Smalltalk only adopt single inheritance as a compromise). Anyway, naming things is hard, especially when everyone does it differently.
Yeah well I clicked on the "spec" link on https://docs.scala-lang.org/ and it still links to a version "3.4", whether that's a lie or not I can't tell. |
The text was updated successfully, but these errors were encountered: