Определите мой собственный макрос чтения
В Common Lisp есть некоторые макросы чтения, такие как '
#'
#P
, но как я могу написать прочитанный макрос?
Как это:
#T"hello world"
====================>
(gettext "hello world")
1 ответ
Решение
Вы можете использовать set-macro-символ и set-dispatch-macro-символ, например, после:
(set-dispatch-macro-character #\# #\T
(lambda (s c n)
`(gettext ,(read s t nil t))))
==> T
Вы можете использовать установленный синтаксис чтения
(read-from-string "#T\"this is a test\"")
==> (GETTEXT "this is a test")