2011-12-27 18 views
10

¿Existe una función incorporada para imprimir los elementos de una lista sin paréntesis, a nivel superior, o podría haber una mejor manera de escribirClojure imprime una lista sin paréntesis?

(defn println-list 
    "Prints a list without top-level parentheses, with a newline at the end" 
    [alist] 
    (doseq [item alist] 
    (print (str item " "))) 
    (print "\n")) 

para obtener una potencia de

user=> (println-list '(1 2 3 4)) 
1 2 3 4 
nil 

Respuesta

16

¿Algo como esto?

(apply println '(1 2 3 4 5)) 
1 2 3 4 5 
nil 

Desde el Clojure docs for apply:

Usage: (apply f args) 
     (apply f x args) 
     (apply f x y args) 
     (apply f x y z args) 
     (apply f a b c d & args) 
Applies fn f to the argument list formed by prepending intervening 
arguments to args. 
3

en clojure-contrib.string que tiene la función de unir,

user=> (require '[clojure.contrib.string :as string]) 
nil 
user=> (string/join " " '(1 2 3 4 4)) 
"1 2 3 4 4" 
user=> (println (string/join " " '(1 2 3 4 4))) 
1 2 3 4 4 
nil 
Cuestiones relacionadas