से मानचित्र के तत्व निकालने का मैं क्लोजर core.logic का उपयोग करके मानचित्र से डेटा खींचने की कोशिश कर रहा हूं।क्लोजर core.logic
(run 10 [q]
(fresh [?id ?type ?name]
(membero ?type [:t2 :t1])
(== q [?id ?name])
(membero {:id ?id :type ?type :name ?name}
[
{:id 1 :type :t1 :name "one"}
{:id 2 :type :t2 :name "two"}
])))
=> ([2 "two"] [1 "one"])
हालांकि यदि नक्शा करने के लिए कुछ अन्य तत्वों को जोड़ने तो यह मेल करने के लिए विफल रहता है:
(run 10 [q]
(fresh [?id ?type ?name]
(membero ?type [:t2 :t1])
(== q [?id ?name])
(membero {:id ?id :type ?type :name ?name}
[
{:id 1 :type :t1 :name "one" :other1 :o1}
{:id 2 :type :t2 :name "two" :other2 :o2}
])))
मुझे समझ में क्यों matcho
नक्शे के रूप में काम नहीं कर रहा कोई इस कोड मैं इसे करना चाहते हैं के रूप में करता है वही लंबा मेरा quesiton है, मैं इसे कैसे बदल सकता है ताकि यह फिर से काम करता है? मैं इसे मानचित्र में केवल कुछ कुंजियों पर मिलान करने के लिए कैसे प्राप्त करूं या मैप के किसी भी यादृच्छिक कुंजी से मेल खाने के लिए मैं इसे कैसे प्राप्त कर सकता हूं?
संपादित करें:
मैं (https://github.com/clojure/core.logic/pull/10 करने के लिए धन्यवाद) patial-map
का उपयोग कर काम करने के लिए मिल गया
(run 10 [q]
(fresh [?id ?type ?name]
(membero ?type [:t2 :t1])
(== q [?id ?name])
(membero (partial-map {:id ?id :type ?type :name ?name})
[
{:id 1 :type :t1 :name "one" :other1 :o2}
{:id 2 :type :t2 :name "two" :other2 :o1}
])))
हालांकि मैं एक ध्यान दें कि featurec
partial-map
के बजाय इस्तेमाल किया जाना चाहिए पाया। मेरा नया प्रश्न: featurec
का उपयोग करने के लिए इसे कैसे बदला जाए?
मैंने परीक्षण कोड का एक सारांश जोड़ा जो मैं उपयोग कर रहा था: https://gist.github.com/4454548 –