3 ms·
Lisp CLOS does not have inheritance for methods either, but is OO by definition. Imho, OO is about polymorphism [0] and Rust provides that. [0] http://beza1e1
by qznc 10y ago
Lisp CLOS does not have inheritance for methods either, but is OO by definition.
Imho, OO is about polymorphism [0] and Rust provides that.
[0] http://beza1e1.tuxen.de/articles/oop.html http://beza1e1.tuxen.de/articles/oop.html
- belovedeagle 10y agoRust fails many of the other tests mentioned. As for polymorphism, is Haskell OO? If so, then I think my claim that the term is meaningless is justified.
- qznc 10y agoThis is the punch line. Once you have a definition of OO, which fits all languages usually considered OO, the definition also fits Haskell. :)
- dfox 10y agoCLOS effectively does have inheritance for methods because for sane specializers subclass matches everywhere where it's superclass matches. One can in fact view the CLOS mechanism of specializers and effective-method composition as more flexible mechanism for inheritance than traditional implementations of OOP.
- lispm 10y agoCommon Lisp has inheritance of methods, but it does not work on a class hierarchy directly. When a generic function gets called, the applicable methods are being ordered based on the classes of the arguments - not just one argument, but possibly many. A more specific method can call the next method. In some cases this is done automatically. This is inheritance, based on the class hierarchy. CLOS also allows the developer to implement other inheritance mechanisms, by developing his own way to combine the methods of a generic function.