(const pat init) pat: a pattern init: any form
Defines one or more associated constants.
(const a b c d) is equivalent to
(const a b) followed by
(const c d).
Constants don't take up any space in the object; they are stored in the class instead.
Their initializer forms are evaluated while the
mixin form is being evaluated.
Those initializers may refer to constants defined earlier in the same state, or constants
defined in parent states, using the
Constants participate in name shadowing, just like fields. Constants can shadow fields, and vice versa.
When a constant is defined at the toplevel of a class, it can be read by indexing the
class itself using
(defclass Example (const a 100) (const b (* @a 5))) (let ob (Example)) (prn [ob 'b]) ; prints 500 (prn [ob 'Main:b]) ; prints 500 (prn [Example 'b]) ; prints 500 (prn [Example 'Main:b]) ; prints 500