2011-12-27 16 views
10

C'è una funzione built-in per stampare gli elementi di una lista senza parentesi di livello superiore, o ci sarebbe un modo migliore per scrivereClojure stampa un elenco senza parentesi?

(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")) 

per ottenere una potenza di

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

risposta

16

Qualcosa come questo?

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

Dal 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

in clojure-contrib.string si ha la funzione di unire,

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 
Problemi correlati