![[HARLEQUIN]](../Graphics/Harlequin-Small.gif)
![[Previous]](../Graphics/Prev.gif)
![[Up]](../Graphics/Up.gif)
![[Next]](../Graphics/Next.gif)
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:
Exceptional Situations:
For either function, an error is signaled if disp-char is not a dispatching macro character in readtable.
See Also:
Notes:
It is necessary to use make-dispatch-macro-character to set up the dispatch character before specifying its sub-characters.
![[Starting Points]](../Graphics/Starting-Points.gif)
![[Contents]](../Graphics/Contents.gif)
![[Index]](../Graphics/Index.gif)
![[Symbols]](../Graphics/Symbols.gif)
![[Glossary]](../Graphics/Glossary.gif)
![[Issues]](../Graphics/Issues.gif)