Недавно я столкнулся с так называемым макросом для чтения Common Lisp с хэш-точками, и мне интересно, как он работает и что он делает. Использование поисковых систем не сильно помогло, поэтому приветствуются любые примеры, пояснения и особенно варианты использования.
Common Lisp Hash-Dot #. Макрос чтения
comment
lispworks.com/documentation/HyperSpec/Body/02_dhf.htm
- person Rainer Joswig   schedule 15.02.2018
Ответы (1)
В спецификации это называется резкой точкой. Он выполняет оценку времени чтения. Вы можете поискать это в гиперспецификации Common Lisp. У меня его нет под рукой, но я верю, что в Emacs со слизью можно поискать документацию по макросам для чтения. Сделайте C-c C-d C-h
, чтобы узнать, есть ли для этого команда.
#.foo
читается как то, что возвращает (eval foo)
. Таким образом:
CL-USER> '((+ 1 2) #.(+ 1 2))
((+ 1 2) 3)
CL-USER> (read)
#.(* 3 4)
12
person
Dan Robertson
schedule
14.02.2018