Classes are types that specify an inheritance relationship and can
have associated structured data through properties.
<class> | (<type>) | C |
class-name | (x|<class> => (t? <sym>)) | G |
| returns class name or false otherwise. | |
class-parents | (x|<class> => <seq>) | G |
| direct superclasses. | |
class-ancestors | (x|<class> => <seq>) | G |
| class precedence list including this class. See
Appendix * for details. | |
class-direct-props | (x|<class> => <seq>) | G |
| properties defined directly on this class. | |
class-props | (x|<class> => <seq>) | G |
| properties defined on this class or any superclass. | |
class-children | (x|<class> => <seq>) | G |
| direct subclasses. | |
DC | (DC ,name (,@parents)) | S |
| defines a class named ,name with direct parents ,@parents | |
new | (type|<class> prop-inits|...) | M |
| creates an instance of type type and prop
initialized as specified by prop-inits.
For example, (new <point> point-x 1 point-y 2)
creates a point with x=1 and y=2. | |
|
Properties are named data associated with classes. Their values are
accessed exclusively through generic functions, called getters and
setters. Descriptions of properties are instances of <prop>.
Property values can either be specified at creation time with keyword
arguments, by calling a property setter, or through a property
initialization function called lazily the first time a getter is called if
the property is otherwise uninitialized. Property initialization
functions are called with a single argument, the object under construction.
<prop> | (<any>) | C |
prop-owner | (x|<prop> => <any>) | P |
| class on which property was directly defined. | |
prop-getter | (x|<prop> => <gen>) | P |
| reader accessor generic. | |
prop-setter | (x|<prop> => <gen>) | P |
| writer accessor generic. | |
prop-type | (x|<prop> => <type>) | P |
| type constraining property value. | |
prop-init | (x|<prop> => <fun>) | P |
| lazy initialization function. | |
find-getter | (c|<class> getter|<gen> => <met>) | G |
| finds getter method defined on given class. | |
find-setter | (c|<class> setter|<gen> => <met>) | G |
| finds setter method defined on given class. | |
prop-bound? | (x g|<gen> => <log>) | P |
| returns true if property with getter g is bound in
instance x. | |
add-prop | (owner getter|<gen> setter|<gen> type|<type> init|<fun>) | M |
| where init is a one parameter function that returns the initial
value for the prop and gets called lazily with the new instance as
the argument. | |
DP | (DP ,name (,oname|,owner => ,type) [,@init]) | S |
| add's a property to ,owner with getter named
,name, setter named ,name ## "-setter",
type ,type, and optionally initial
value ,init. The initial value function is evaluated
lazily when prop's value is first requested. | |
|