2010-04-26 6 views

risposta

32

concat restituisce una sequenza pigro.

user=> (doc concat) 
------------------------- 
clojure.core/concat 
([] [x] [x y] [x y & zs]) 
    Returns a lazy seq representing the concatenation of the elements in the supplied colls. 

puoi riconvertirlo in un vettore con in:

user=> (into [] (concat [1 2] [3 4] [5 6])) 
[1 2 3 4 5 6] 

in usa transitori quindi è piuttosto veloce su di esso.

+16

C'è anche 'vec' per un codice leggermente più corto con prestazioni molto simili. –

+1

Qualcuno sa perché? –

+0

Credo che il 'perché' sia perché restituisce un LazySeq, che in realtà non è una lista. Inoltre, i vettori Clojure non sono pigri. Vedi http://stackoverflow.com/q/12206806/1814970. – marcelocra

Problemi correlati