एक let
रूप में (Clojure यहाँ) मैं की तरहडीफ़ फॉर्म में कोई विनाश क्यों नहीं?
(let [[u s v] (svd A)]
(do-something-with u v))
जहां svd
लंबाई तीन की सूची लौटाता है कुछ कर सकते हैं। यह करने के लिए बात की एक बहुत ही स्वाभाविक तरह है, तो क्यों है कि हम हम
(def [u s v] (svd A))
और def
प्रपत्र के डिफ़ॉल्ट व्यवहार के रूप में अपनी विभिन्न सामान्यीकरण की जरूरत नहीं है नहीं है? मैं नहीं देखता कि यह किसी भी चीज़ से हस्तक्षेप कैसे करेगा def
पहले से ही कर रहा है। क्या कोई जो लिस्प या क्लोजर के ज़ेन को समझता है, वह बता सकता है कि def
let
के रूप में शक्तिशाली के रूप में बाध्यकारी (विनाशकारी के साथ) का समर्थन क्यों नहीं करता है?
मुझे लगता है कि यह उस तरह का उत्तर है जिसमें मुझे रूचि थी। मेरे हिस्से पर अत्यधिक संपादकीयकरण के जोखिम पर, मुझे लगता है कि आप कह रहे हैं कि क्लोजर में ऐसा नहीं किया गया है आंशिक रूप से तकनीकी है (उसमें 'def' होता है कंपाइलर आदिम), और आंशिक रूप से सम्मेलन द्वारा (उसमें (जैसे रिच हिकी) एक आदिम 'डीफ' * के साथ शुरू हो सकता था और बाद में कोर में किसी बिंदु पर' def' घोषित किया गया था)। –
@ गैब्रियल मिशेल हाँ, यह संभव होगा। लेकिन यह 'let' के लिए 'def' के लिए बहुत कम उपयोगी है, और समरूपता की कमी होगी। 'चलो '** हमेशा ** उस के अंदर एक वेक्टर और विनाश लेता है; 'def' करने के लिए ऐसा करना बहुत कम सुविधाजनक होगा, और डीफ को या तो प्रतीक या विनाशकारी रूप को स्वीकार करने के लिए बहुत भयानक आईएमओ है। – amalloy
क्या आप इस बारे में कुछ और कह सकते हैं कि ऐसा मैक्रो सकल क्यों होगा? अभी, मैं सोच रहा हूं कि यह एक अच्छा विचार है- लेकिन, आपकी टिप्पणी के आधार पर, मैं यह भी सोच रहा हूं कि यह किसी भी तरह क्लोजर के अनाज के खिलाफ चलाएगा। आम तौर पर भाषा के अनाज के साथ जाना बेहतर होता है जो इसके खिलाफ चलता है जो कुछ भी करता है लेकिन भाषा के साथ अनुभवहीन किसी के लिए अपील करता है। तथ्य यह है कि 10 वर्षों के बाद, इस तरह के मैक्रो का उपयोग आम नहीं है और आगे मुझे आश्चर्य होता है कि अगर यह किसी अन्य तरीके से हल की गई समस्या का एक कठोर समाधान है। –