2009-07-25 10 views
4

Ich habe die Liste in Clojure, und (aufgrund der zugrunde liegenden Java-Bibliothek) muss die Liste ändern (mit dem Iterator Remove-Methode). Gibt es einen eleganteren Weg, um diesen Effekt beim Schließen zu erzielen, als ein destruktives Äquivalent von (map fn seq) zu schreiben?Änderbare Seqs in Clojure

+0

Was Sie für diese Listen verwenden? Müssen sie native Java-Listen sein? Wie oft sind sie mutiert? –

Antwort

4

Clojure-Listen sind unveränderlich. Wenn Sie also eine veränderbare Liste benötigen, können Sie immer eine verwenden, die Java bereitstellt.

Zum Beispiel:

user=> (import java.util.LinkedList)     
java.util.LinkedList 
user=> (def a (list 3 6 1 3))   
#'user/a 
user=> (def b (java.util.LinkedList. a)) 
#'user/b 
user=> b 
#<LinkedList [3, 6, 1, 3]> 
user=> (.remove b 6) 
true 
user=> b 
#<LinkedList [3, 1, 3]>