यह सवाल "मानसिक masterbation" से विशुद्ध रूप से आता है और शायद कोई व्यावहारिक महत्व है।Clojure संकलन समय स्थिर
अगर मैं def
का उपयोग कर Clojure में एक मूल्य को परिभाषित, संकलक संकलन समय पर यह मूल्यांकन करने के लिए, और रन-टाइम तक इंतजार नहीं प्रेरित किया जा सकता है?
(def the-answer 42)
(+ the-answer 1)
मुझे लगता है मैं मैक्रो निर्धारित सकता है, लेकिन बुला वाक्य रचना तरह की अजीब हो जाता है:
(defmacro the-answer [] 42)
(+ (the-answer) 1)
यह भी काम करता है, लेकिन अभी भी बदसूरत है:
(+ `~the-answer 1)
मैं यह भी समझता (या विश्वास) कि क्लोजर संकलन समय पर निरंतर अभिव्यक्ति का मूल्यांकन करता है:
(def milliseconds-per-day (* 24 60 60 1000))
मैं सिर्फ कॉमन लिस्प सीख रहा हूँ, लेकिन मैं समझता हूँ कि कॉमन लिस्प उपयोगकर्ता परिभाषित पाठक मैक्रो का समर्थन करता है, तो आप एक पाठक मैक्रो (#$
की तरह कुछ) है कि संकलन समय पर निम्न प्रतीक का मूल्यांकन करता है निर्धारित कर सकते हैं:
(+ #$the-answer 1)
वैसे, कि वाक्य रचना नहीं "खूबसूरत" मैक्रो कॉल की तुलना में है।
क्लोजर संकलन समय पर निरंतर वर्रों का मूल्यांकन कैसे कर सकता है और वास्तविक मूल्य के साथ संदर्भ को प्रतिस्थापित कर सकता हूं? यह पहले से ही ऐसा करता है?
किसी ने भी Knuth के कानून ("समयपूर्व अनुकूलन सभी बुराइयों की जड़" उद्धृत करना शुरू करने से पहले, मैं क्लोजर संकलन के आंतरिक को बेहतर ढंग से समझने के लिए इस सवाल से पूछता हूं।
यह नहीं है कि पोंटिफिकेशन क्या है। Pontification जोरदार या dogmatically बोलना है। –
हाँ, मैंने इसे हटा दिया। – Ralph