User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:functions:describe [2019/06/15 02:00]
cl:functions:describe [2019/09/16 13:00] (current)
Line 1: Line 1:
 +====== Function DESCRIBE ======
 +
 +====Syntax====
 +  * **describe** //object ''&​optional''​ stream// → //<no values>//​
 +
 +====Arguments and Values====
 +  * //object// - an //​[[CL:​Glossary:​object]]//​.
 +  * //stream// - an //​[[CL:​Glossary:​output]]//​ //​[[CL:​Glossary:​stream designator]]//​. The default is //​[[CL:​Glossary:​standard output]]//.
 +
 +====Description====
 +**describe** displays information about //object// to //stream//.
 +
 +For example, **describe** of a //​[[CL:​Glossary:​symbol]]//​ might show the //​[[CL:​Glossary:​symbol]]//'​s value, its definition, and each of its properties. **describe** of a //​[[CL:​Glossary:​float]]//​ might show the number'​s internal representation in a way that is useful for tracking down round-off errors. In all cases, however, the nature and format of the output of **describe** is //​[[CL:​Glossary:​implementation-dependent]]//​.
 +
 +**describe** can describe something that it finds inside the //object//; in such cases, a notational device such as increased indentation or positioning in a table is typically used in order to visually distinguish such recursive descriptions from descriptions of the argument //object//.
 +
 +The actual act of describing the object is implemented by **[[CL:​Functions:​describe-object]]**. **describe** exists as an interface primarily to manage argument defaulting (including conversion of arguments **[[CL:​Constant Variables:​t]]** and **[[CL:​Constant Variables:​nil]]** into //​[[CL:​Glossary:​stream]]//​ //​[[CL:​Glossary:​object|objects]]//​) and to inhibit any return values from **[[CL:​Functions:​describe-object]]**.
 +
 +**describe** is not intended to be an interactive function. In a //​[[CL:​Glossary:​conforming implementation]]//,​ **describe** must not, by default, prompt for user input. User-defined methods for **[[CL:​Functions:​describe-object]]** are likewise restricted.
 +
 +====Examples====
 +None.
 +
 +====Side Effects====
 +Output to //​[[CL:​Glossary:​standard output]]// or //​[[CL:​Glossary:​terminal I/O]]//.
 +
 +====Affected By====
 +**[[CL:​Variables:​star-standard-output-star|*standard-output*]]** and **[[CL:​Variables:​star-terminal-io-star|*terminal-io*]]**,​ methods on **[[CL:​Functions:​describe-object]]** and **[[CL:​Functions:​print-object]]** for //​[[CL:​Glossary:​object|objects]]//​ having user-defined //​[[CL:​Glossary:​classes]]//​.
 +
 +====Exceptional Situations====
 +None.
 +
 +====See Also====
 +**[[CL:​Functions:​inspect|Function INSPECT]]**,​ **[[CL:​Functions:​describe-object|Function DESCRIBE-OBJECT]]**
 +
 +====Notes====
 +None.
 +
 +\issue{DESCRIBE-UNDERSPECIFIED:​DESCRIBE-OBJECT} \issue{DESCRIBE-UNDERSPECIFIED:​DESCRIBE-OBJECT} \issue{DESCRIBE-UNDERSPECIFIED:​DESCRIBE-OBJECT} \issue{DESCRIBE-INTERACTIVE:​NO}