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

В Common Lisp есть несколько макросов чтения, таких как ' #' #P, но как я могу написать макрос чтения?

Как это:

#T"hello world"
====================>
(gettext "hello world")

person Mike Manilone    schedule 26.02.2013    source источник


Ответы (1)


Вы можете использовать set-macro-character и set-dispatch-macro-character, например, после:

(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")
person 6502    schedule 26.02.2013