Ответ 1
#(do %& 1)
... но (constantly 1)
лучше.
Используя defn или fn, легко создать функцию, которая принимает один аргумент, который игнорирует его, и возвращает 1:
(defn ret1 [arg] 1)
(fn [arg] 1)
Можно ли сделать это с помощью макроса #()? Я не имею в виду использовать что-то уродливое или "обманывать", как
#(/ % %) or
#(if (nil? %) 1 1)
Я имею в виду буквальное игнорирование параметра и возврат 1. Я не могу найти чистый синтаксис, который работает.
#(do %& 1)
... но (constantly 1)
лучше.
СинтаксиС#() не может использоваться для создания функций с неиспользуемыми параметрами в соответствии с вашим описанием. Это ограничение макроса читателя #().
Я бы рекомендовал не использовать #() и вместо этого просто писать (постоянно 1), что является очень кратким способом создания функции, которая игнорирует параметр и вместо этого всегда возвращает 1.
Как насчет #(identity 1)
? который делает то же самое, что и #(do %& 1)
или (constantly 1)
.