Определите мой собственный макрос чтения

В 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")
Другие вопросы по тегам