Я нашел эту функцию LISP в то время как я был прибегая к помощиWeird синтаксис Common Lisp
(defun filter (lst items-to-filter)
(cond ((null lst) nil)
((member (car lst) items-to-filter) #1=(filter (cdr lst) items-to-filter))
(t (cons (car lst) #1#))))
Это просто установить разницу, но это первый раз, когда я вижу # 1 = и # 1 #, синтаксис. Я думаю, что понимаю, что это значит, просто взглянув на код, но я не уверен. Я думаю, что # 1 = используется для обозначения выражения, чтобы не повторять его позже, когда это необходимо, можно просто ссылаться на него с помощью # index #, в этом случае index = 1. Мне было интересно, может ли кто-нибудь пролить свет на это. Что называются этими конструкциями, если для них есть ссылка, и если они широко используются в современном коде Lisp. Спасибо
Возможный справочный материал: http://www.lispworks.com/documentation/HyperSpec/Body/02_dh.htm Похоже, что второй '#' вызывает макрос «ссылка на». Я не знаю, является ли использование этой функции распространенной. Является ли использование lisp распространенным? :) – pseudocoder
Это макрос читателя с острым значком, который дает возможность ссылаться на ранее прочитанную форму. Для документации см. Раздел 2.4.8.16 Общего Lisp hyperspec, например. на http://www.lispworks.com/documentation/HyperSpec/Body/02_dhp.htm –
Спасибо, что сделал трюк: D. – turingcomplete