(map #(1) [ 1 3 5 7 ])
Не будет работать по двум причинам:
#(1)
- анонимная функция с нулевым аргументом, поэтому она не будет работать с картой (для которой требуется функция с одним аргументом)при использовании с одной входной последовательностью). - Даже если бы он имел правильную арность, он не работал бы, потому что он пытался вызвать константу 1 как функцию, подобную
(1)
- попробуйте (#(1))
, напримересли вы хотите увидеть эту ошибку.
Вот несколько альтернатив, которые будут работать:
; use an anonymous function with one (ignored) argument
(map (fn [_] 1) [1 3 5 7])
; a hack with do that ignores the % argument
(map #(do % 1) [1 3 5 7])
; use a for list comprehension instead
(for [x [1 3 5 7]] 1)
; use constantly from clojure.core
(map (constantly 1) [1 3 5 7])
Из вышесказанного, я думаю, версии, использующие постоянно или для должно быть предпочтительным - они более понятны и более идиоматичны.