4 ms·
The CLOS is more dynamic than python. You can do things like specialize a method on multiple types based on the runtime types (that is to say, the method concep
by ByteJockey 4y ago
The CLOS is more dynamic than python. You can do things like specialize a method on multiple types based on the runtime types (that is to say, the method conceptually belongs to the intersection of the classes, not any single class).
I like python (especially things like comprehensions), but to say it's more dynamic than common lisp is a little insane.
- edflsafoiewq 4y agoCL has many constraints that make it less dynamic to "minimize the observable differences between compiled and interpreted programs" (CLHS, 3.2.2.3 Semantic Constraints). For example, if f is defuned in a file, throughout that file you can assume (f x) refers to that f and does not have to be looked up dynamically at runtime. If I recall correctly, method calls in CLOS are also not syntactically distinguished from regular calls either (like they are in x.f() languages), so there is no motivation to write a method unless you actually want the dynamic dispatch methods provide. Methods are fairly rare compared to regular functions.
- ByteJockey 4y ago> For example, if f is defuned in a file, throughout that file you can assume (f x) refers to that f and does not have to be looked up dynamically at runtime. Unless you declare them "notinline". http://www.lispworks.com/documentation/HyperSpec/Body/d_inline.htm#notinline http://www.lispworks.com/documentation/HyperSpec/Body/d_inli... > so there is no motivation to write a method unless you actually want the dynamic dispatch methods provide. Methods have some different functionality in CL than in most languages. For example, you can have the methods from the entire inheritance hierarchy (well, the classes that have had that method specialized for them) all be called as, essentially a pipeline of methods. https://lispcookbook.github.io/cl-cookbook/clos.html#method-qualifiers-before-after-around https://lispcookbook.github.io/cl-cookbook/clos.html#method-... But this is a discussion about dynamism of the object system, and most of that is defined before runtime. How about changing an object's class at runtime? https://www.cliki.net/site/HyperSpec/Body/stagenfun_change-class.html https://www.cliki.net/site/HyperSpec/Body/stagenfun_change-c...