2010-07-06 7 views
5

निम्नलिखित कोड:मैं clojure.set/अंतर का उपयोग कैसे करूं? यह एक PersistentSet पर क्यों काम नहीं करेगा?

(require '[clojure.set]) 
(println (clojure.set/difference '("a" "b" "c" "d") '("c" "d" "e" "f"))) 

मुझे निम्न त्रुटि देता है:

java.lang.ClassCastException: clojure.lang.PersistentList (repl-1:47) 

मुझे समझ नहीं आता मैं गलत क्या कर रही हूं। यह प्रिंट आउट नहीं करना चाहिए ("ए" "बी")?

उत्तर

15

वे सूचियां हैं, सेट नहीं हैं।

(println (clojure.set/difference #{"a" "b" "c" "d"} #{"c" "d" "e" "f"}))

+1

क्या अंतर का एक सूची संस्करण है? या मुझे अपना खुद का रोल करने की ज़रूरत है? –

+3

जेब्रिस्टो: नहीं, लेकिन आप अपनी सूची को एक सेट में बदल सकते हैं: (clojure.set/difference (set '(1 2)) (सेट' (1 3))) => # {2} –

4

मुझे लगता है कि आप require '[clojure.set] की जरूरत नहीं है। ऐसा लगता है कि कोर के साथ स्वचालित रूप से लोड किया जाता है। बस एक प्रतिलिपि शुरू करना, और नीचे दिए गए कार्यों को टाइप करना (कम से कम मेरे लिए)।

user=> (clojure.set/difference (set '(1 2 3)) (set '(3 4 5))) 

\#{1 2} 
संबंधित मुद्दे