2011-04-07 9 views
9

मेथेमेटिका 6 TakeWhile जोड़ा है, जो वाक्य रचना है:,गणित में DropWhile कहां है?

TakeWhile [सूची, crit] तत्वों देता मैंसूची की शुरुआत से जारी इतने लंबे समय के रूप में आलोचक [ई i] सच है।

हालांकि कोई संबंधित "ड्रॉपवॉल्ड" फ़ंक्शन नहीं है। कोई LengthWhile और Drop का उपयोग करके ड्रॉपवॉइस का निर्माण कर सकता है, लेकिन ऐसा लगता है कि ड्रॉपवॉइस का उपयोग करने से कोई निराश हो जाता है। ऐसा क्यों है?

स्पष्टीकरण के लिए, मैं इस फ़ंक्शन को लागू करने का कोई तरीका नहीं मांग रहा हूं। इसके बजाय: यह पहले से मौजूद क्यों नहीं है? ऐसा लगता है कि एक निरीक्षण के अलावा इसकी अनुपस्थिति का कारण होना चाहिए, या अब तक इसे सही किया जाएगा। क्या DropWhile के बारे में कुछ अक्षम, अवांछनीय, या अनावश्यक है?


, DropWhile के समारोह के बारे में कुछ अस्पष्टता होने के लिए वहाँ दिखाई देता है इसलिए यहाँ एक उदाहरण है:

DropWhile = Drop[#, LengthWhile[#, #2]] &; 

DropWhile[{1,2,3,4,5}, # <= 3 &] 
Out= {4, 5}
+1

"अस्पष्टता" पर। यह "थोड़ी देर" शब्द की एक भाषा अस्पष्टता है। हमें * जबकि * * मैथमैटिका * में ऐसे कार्यों में उपयोग किए जाने वाले "अर्थ" के मानक अर्थ का पालन करना चाहिए। तो आपकी समस्या को 'सूची = {1, 2, 3, 4, 5} के रूप में पुनः लिखा जा सकता है; जबकि [सूची [[1]] <= 3, सूची = ड्रॉप [सूची, 1]]; list'। जैसा कि मैं देख सकता हूं कोई अस्पष्टता नहीं है। –

+0

@Alexey, मेरा संपादन उस उत्तर के जवाब में था जिसने एक ऐसी विधि का सुझाव दिया जो ऊपर परिभाषा से सहमत नहीं था। तब से इसे हटा दिया गया है। –

उत्तर

3

गणित में सर्वव्यापी सूची निश्चित लंबाई वैक्टर हैं, और जब वे मशीन नंबरों के होते हैं तो यह एक पैक सरणी है।

इस प्रकार एक पुनरावर्ती परिभाषित लिंक्ड सूची (जैसे लिस्प या हास्केल में) के लिए प्राकृतिक कार्य गणित में प्राथमिक उपकरण नहीं हैं।

तो मुझे लगता है कि यह बताता है कि वोल्फ्राम ने हेरफेर कार्यों के अपने प्रदर्शन को क्यों नहीं भर दिया।

7

बस एक अंधे अनुमान।

बहुत सारे सूची संचालन हैं जो और मानदंड ले सकते हैं। उदाहरण के लिए:

Total..While 
Accumulate..While 
Mean..While 
Map..While 
Etc..While 

वे निर्माण करना मुश्किल नहीं है, वैसे भी।

मुझे लगता है कि उन लोगों को शामिल नहीं किया गया है क्योंकि "आदिम" कार्यों की संख्या पहले से ही बढ़ रही है, और "क्या यह अक्सर आवश्यक है और उपयोगकर्ता द्वारा अच्छे प्रदर्शन के साथ कार्यान्वित करना मुश्किल है?" उन मामलों में प्रचलित है।

+0

इस तर्क से, 'TakeWhile' भी अनुपस्थित नहीं होगा क्योंकि इसे' लंबाई के दौरान 'से बनाया जा सकता है? ऐसा लगता है कि 'टेक' और 'ड्रॉप' एक जोड़ी के रूप में मिलकर जाते हैं, और मुझे विश्वास है कि अन्य भाषाओं को लागू करने में दोनों ही समय लेते हैं और ड्रॉप करते हैं।मुझे लगता है कि मुझे रास्ते में MapWhile के विचार पसंद है। –

+1

@ एमआर। मुझे लगता है कि TakeWhile और lengthWhile का अस्तित्व उत्सुक नहीं है क्योंकि ऑर्थोगोनिटी डब्लूआरआर में फ़ंक्शन कार्यान्वयन के लिए मौजूदा मानदंड नहीं है। हालांकि, हम यहाँ सिर्फ ranting कर रहे हैं। मैं बस जोड़ना चाहता हूं कि मुझे अपनी खुद की बूंद बनाना पड़ा है, जबकि कुछ बार :) –

+0

मुझे आश्चर्य है कि अलग-अलग कार्यों को एक वैकल्पिक दूसरे (या, जो कुछ भी) पैरामीटर स्वीकार करने के लिए विस्फोट किया जा सकता है, जिसने परीक्षण को इंगित किया प्रदर्शन हुआ। इस तरह यह अपनी स्थिति जनरेटर के लिए 'टेक', आदि, ऑर्थोगोनल बना देगा। – rcollyer