Common Lisp Hash-Dot #. Макрос чтения

Недавно я столкнулся с так называемым макросом для чтения Common Lisp с хэш-точками, и мне интересно, как он работает и что он делает. Использование поисковых систем не сильно помогло, поэтому приветствуются любые примеры, пояснения и особенно варианты использования.


person MadPhysicist    schedule 14.02.2018    source источник
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