Анонимная функция, возвращающая 1, используя #()

Используя defn или fn, легко создать функцию, которая принимает один аргумент, который игнорирует его, и возвращает 1:

(defn ret1 [arg] 1)
(fn [arg] 1)

Можно ли сделать это с помощью макроса #()? Я не имею в виду использовать что-то уродливое или "обманывать", как

#(/ % %)  or 
#(if (nil? %) 1 1)

Я имею в виду буквальное игнорирование параметра и возврат 1. Я не могу найти чистый синтаксис, который работает.

Ответы

Ответ 1

#(do %& 1)... но (constantly 1) лучше.

Ответ 2

СинтаксиС#() не может использоваться для создания функций с неиспользуемыми параметрами в соответствии с вашим описанием. Это ограничение макроса читателя #().

Я бы рекомендовал не использовать #() и вместо этого просто писать (постоянно 1), что является очень кратким способом создания функции, которая игнорирует параметр и вместо этого всегда возвращает 1.

Ответ 3

Как насчет #(identity 1)? который делает то же самое, что и #(do %& 1) или (constantly 1).