ToC | DocOverview | CGDoc | RelNotes | Index | PermutedIndex
| Allegro CL

| ANSI Common Lisp 1 Introduction 1.4 Definitions 1.4.1 Notational Conventions ### 1.4.1.5 Designators A designator is an object that denotes another object. Where a parameter of an operator is described as a designator, the description of the operator is written in a way that assumes that the value of the parameter is the denoted object; that is, that the parameter is already of the denoted type. (The specific nature of the object denoted by a "<<type>> designator" or a "designator for a <<type>>" can be found in the Glossary entry for "<<type>> designator.") For example, "nil" and "the value of *standard-output*" are operationally indistinguishable as stream designators. Similarly, the symbol `foo` and the string `"FOO"` are operationally indistinguishable as string designators. Except as otherwise noted, in a situation where the denoted object might be used multiple times, it is implementation-dependent whether the object is coerced only once or whether the coercion occurs each time the object must be used. For example, mapcar receives a function designator as an argument, and its description is written as if this were simply a function. In fact, it is implementation-dependent whether the function designator is coerced right away or whether it is carried around internally in the form that it was given as an argument and re-coerced each time it is needed. In most cases, conforming programs cannot detect the distinction, but there are some pathological situations (particularly those involving self-redefining or mutually-redefining functions) which do conform and which can detect this difference. The following program is a conforming program, but might or might not have portably correct results, depending on whether its correctness depends on one or the other of the results:
     (defun add-some (x)
       (defun add-some (x) (+ x 2))
       (+ x 1))   ADD-SOME
     (mapcar 'add-some '(1 2 3 4))
     (2 3 4 5)
    OR(2 4 5 6)
In a few rare situations, there may be a need in a dictionary entry to refer to the object that was the original designator for a parameter. Since naming the parameter would refer to the denoted object, the phrase "the <<parameter-name>> designator" can be used to refer to the designator which was the argument from which the value of <<parameter-name>> was computed.

© Franz Inc. 1998-2019 - File last updated 02-07-2019