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

| ANSI Common Lisp 23 Reader 23.2 Dictionary of Reader
23.2.9 set-dispatch-macro-character, get-dispatch-macro-character | Function
  Syntax: get-dispatch-macro-character disp-char sub-char `&optional` readtable function set-dispatch-macro-character disp-char sub-char new-function `&optional` readtable t Arguments and Values: disp-char - a character. sub-char - a character. readtable - a readtable designator. The default is the current readtable. function - a function designator or nil. new-function - a function designator. Description: set-dispatch-macro-character causes new-function to be called when disp-char followed by sub-char is read. If sub-char is a lowercase letter, it is converted to its uppercase equivalent. It is an error if sub-char is one of the ten decimal digits. set-dispatch-macro-character installs a new-function to be called when a particular dispatching macro character pair is read. New-function is installed as the dispatch function to be called when readtable is in use and when disp-char is followed by sub-char. For more information about how the new-function is invoked, see Section 2.1.4.4 Macro Characters. get-dispatch-macro-character retrieves the dispatch function associated with disp-char and sub-char in readtable. get-dispatch-macro-character returns the macro-character function for sub-char under disp-char, or nil if there is no function associated with sub-char. If sub-char is a decimal digit, get-dispatch-macro-character returns nil. Examples:
       (get-dispatch-macro-character #\# #\{)   NIL
       (set-dispatch-macro-character #\# #\{        ;dispatch on #{
          #'(lambda(s c n)
              (let ((list (read s nil (values) t)))  ;list is object after #n{
                (when (consp list)                   ;return nth element of list
                  (unless (and n (< 0 n (length list))) (setq n 0))
                  (setq list (nth n list)))
               list)))   T
       #{(1 2 3 4)  1
       #3{(0 1 2 3)  3
       #{123  123
  If it is desired that `#$foo` : as if it were `(dollars foo)`.
      (defun |#-reader| (stream subchar arg)
         (declare (ignore subchar arg))
         (list 'dollars (read stream t nil t)))  |#-reader|
       (set-dispatch-macro-character #\# #\$ #'|#$-reader|)   T
See Also: Section 2.1.4.4 Macro Characters Side Effects: The readtable is modified. Affected By: *readtable*. Exceptional Situations: For either function, an error is signaled if disp-char is not a dispatching macro character in readtable. See Also: *readtable* Notes: It is necessary to use make-dispatch-macro-character to set up the dispatch character before specifying its sub-characters. Allegro CL Implementation Details: None.

© Franz Inc. All Rights Reserved - File last updated 2022-07-25