मैं समस्या यह है कि मैं एक उदाहरण के समारोह के साथ उदाहरण देकर स्पष्ट करना होगा में चालू रखने के DATALOG प्रश्नों प्रोग्राम के रूप में निर्माण करने के लिए कोशिश कर रहा हूँ, लेकिन:क्लोजर बैकक्वॉट के अंदर नामों के लिए नेमस्पेस क्वालीफायर क्यों जोड़ रहा है?
(defn test-expr [attribute]
`[?entity ~attribute ?value]])
जब मैं चलाने (परीक्षण expr 3), मैं उत्पादन उम्मीद करेंगे:
[?entity 3 ?value]
लेकिन बजाय, मैं
[mynamespace/?entity 3 mynamespace/?value]
कौन सा जाहिर है जो मैं चाहता नहीं है मिलता है। क्या क्लोजर बताने का कोई तरीका है "कृपया केवल सूची उद्धृत करें और वेरिएबल्स का विस्तार करें जो मैं आपको बताता हूं?"
इस कारण से, उपयोगकर्ताओं को (* खांसी * आप) को आपके द्वारा उपयोग किए जा रहे उसी नाम के साथ कार्यों और/या चर को परिभाषित करके गलती से अपने मैक्रोज़ को तोड़ने से रोकने के लिए है। – Cubic
@ क्यूबिक, सहमत हुए। जहां तक मैं समझता हूं, यह स्कीम हाइजीनिक मैक्रोज़ और कॉमन लिस्प सादे मैक्रो सिस्टम के बीच कुछ प्रकार का समझौता है: मैक्रो परिभाषाएं लगभग सामान्य लिस्प की तरह दिखती हैं (यह अच्छा है, क्योंकि योजना मैक्रोज़ आईएमओ लिखना कठिन होता है), लेकिन डिफ़ॉल्ट रूप से स्वच्छता के कुछ स्तर मौजूद हैं - प्रतीकों को अंधाधुंध पर कब्जा नहीं किया जाता है लेकिन इसके बजाय नामस्थान के साथ उपसर्ग किया जाता है। और जब आवश्यक हो तो सादा प्रतिस्थापन पर वापस गिरना हमेशा संभव होता है (उदाहरण के लिए एनाफोरिक मैक्रोज़ के लिए)। –