(map #(1) [ 1 3 5 7 ])
non funziona per due motivi:
#(1)
è una funzione anonima zero argomento, quindi non funzionerà con la mappa (che richiede una funzione one-argomento quando utilizzato con una sola sequenza di input).
- Anche se avesse il diritto, non funzionerebbe perché sta tentando di chiamare la costante 1 come una funzione come
(1)
- prova ad esempio se vuoi vedere questo errore.
Qui ci sono alcune alternative che funzionano:
; 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])
Di quanto sopra, credo che le versioni utilizzando constantly o for dovrebbe essere preferito - questi sono più chiare e più idiomatica.
Se si verifica un errore del compilatore, è una buona idea includerlo nella domanda in modo che le persone possano aiutarla più facilmente. – mikera