This function provides a verbose description of a class including: abstract role (whether direct instances can be created or not), direct superclasses and subclasses, class precedence list, slots with all their facets and sources, and all recognized message-handlers. This function has no return value.
Syntax
(describe-class <class-name>)
Example
CLIPS>
(defclass CHILD (is-a USER)
(role abstract)
(multislot parents (cardinality 2 2))
(slot age (type INTEGER)
(range 0 18))
(slot sex (access read-only)
(type SYMBOL)
(allowed-symbols male female)
(storage shared)))
CLIPS>
(defclass BOY (is-a CHILD)
(slot sex (source composite)
(default male)))
CLIPS>
(defmessage-handler BOY play ()
(printout t "The boy is now playing..." crlf))
CLIPS> (describe-class CHILD)
====================================================================
********************************************************************
Abstract: direct instances of this class cannot be created.
Direct Superclasses: USER
Inheritance Precedence: CHILD USER OBJECT
Direct Subclasses: BOY
--------------------------------------------------------------------
SLOTS : FLD DEF PRP ACC STO MCH SRC VIS CRT OVRD-MSG SOURCE(S)
parents : MLT STC INH RW LCL RCT EXC PRV NIL put-parents CHILD
age : SGL STC INH RW LCL RCT EXC PRV NIL put-age CHILD
sex : SGL STC INH R SHR RCT EXC PRV NIL NIL CHILD
Constraint information for slots:
SLOTS : SYM STR INN INA EXA FTA INT FLT
parents : + + + + + + + + RNG:[-oo..+oo] CRD:[2..2]
age : + RNG:[0..18]
sex : #
-------------------------------------------------------------------
Recognized message-handlers:
init primary in class USER
delete primary in class USER
print primary in class USER
direct-modify primary in class USER
message-modify primary in class USER
direct-duplicate primary in class USER
message-duplicate primary in class USER
********************************************************************
====================================================================
CLIPS>
The following table explains the fields and their possible values in the slot descriptions:
Field Values Explanation
FLD SGL/MLT Field type (singlefield or multifield)
DEF STC/DYN/NIL Default value (static, dynamic or none)
PRP INH/NIL Propagation to subclasses (Inheritable or not
inheritable)
ACC RW/R/INT Access (readwrite, readonly or initializeonly)
STO LCL/SHR Storage (local or shared)
MCH RCT/NIL Patternmatch (reactive or nonreactive)
SRC CMP/EXC Source type (composite or exclusive)
VIS PUB/PRV Visibility (public or private)
CRT R/W/RW/NIL Automatically created accessors (read, write,
read-write or none)
OVRD-MSG <message-name> Name of message sent for slotoverrides in
makeinstance, etc.
SOURCE(S) <class-name>+ Source of slot (more than one class for composite)
In the constraint information summary for the slots, each of the columns shows one of the primitive data types . A + in the column means that any value of that type is allowed in the slot. A # in the column means that some values of that type are allowed in the slot. Range and cardinality constraints are displayed to the far right of each slot's row. The following table explains the abbreviations used in the constraint information summary for the slots:
Abbreviation Explanation
SYM Symbol
STR String
INN Instance Name
INA Instance Address
EXA External Address
FTA Fact Address
INT Integer
FLT Float
RNG Range
CRD Cardinality