(map #(1) [ 1 3 5 7 ])
no funcionará por dos razones:
#(1)
es una función anónima sin argumentos, por lo que no va a trabajar con el mapa (que requiere una función de un argumento cuando se utiliza con una secuencia de entrada).
- Incluso si tuviera la razón correcta, no funcionaría porque está tratando de llamar a la constante 1 como una función como
(1)
- pruebe (#(1))
por ejemplo si quiere ver este error.
Estas son algunas de las alternativas que trabajarán:
; 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])
De lo anterior, creo que las versiones usando constantly o se debe preferir for - estos son más claras y más idiomática.
Si obtiene un error de compilación, es una buena idea incluir esto en la pregunta para que las personas puedan ayudarlo más fácilmente. – mikera