2011-11-10 8 views
7

सामान्य लिस्प में, हम remove फ़ंक्शन का उपयोग कर सकते हैं।OCaml में किसी सूची से तत्व को निकालने का मानक तरीका क्या है?

ऐसा लगता है कि ओकैमल में ऐसी कोई विधि नहीं है?

+0

बिल्कुल हटाया जाना चाहिए कि कैसे हटाया जाना चाहिए? क्या आप बस ['filter'] (http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html) सूची चाहते हैं? (['हटाएं '] (http://www.lispworks.com/documentation/HyperSpec/Body/f%5Frm%5Frm.htm), कम से कम आम लिस्प अर्थ में एक बहुत, बहुत डरावना जानवर है ... शुरू/अंत श्रेणी, गणना, कुंजी, और predicates, ओह मेरे!) –

उत्तर

14

ओकैमल में सूचियां अपरिवर्तनीय हैं। तो आप उनसे चीजों को हटा नहीं सकते हैं। आप आमतौर पर एक और सूची बनाते हैं जिसमें ऐसी चीजें नहीं होतीं जो आप नहीं चाहते हैं। इसके लिए, आप List.filter का उपयोग करेंगे।

यदि आपके पास बिल्कुल म्यूटेबल सूचियां हैं, तो आप कर सकते हैं। बैटरियों में Dllist नामक कुछ है जो आप चाहते हैं कि हो सकता है। (हालांकि, यह एक द्विपक्षीय सूची है, हालांकि, लिस्प सूची के विपरीत)।

ओकैम के बारे में महान चीजों में से एक, मेरी राय में, यह है कि शुद्ध कार्यात्मक सबसेट वास्तव में काफी प्रभावी है। मुझे अपनी परियोजनाओं में म्यूटेबल सूचियों का उपयोग करने की आवश्यकता नहीं है।

+0

मैं देखता हूँ। मुझे List.filter का उपयोग करना चाहिए। –

+0

हाय जेफरी, अगर मैं कुछ तत्वों को एक डेटा संरचना में संग्रहीत करना चाहता हूं, और यह ऐसा करने के लिए सीधे एक पुनरावर्ती कार्य लिखने के लिए उपयुक्त नहीं है? – computereasy

+0

संक्षिप्त उत्तर: यह हमेशा उपयुक्त है! :-) लंबा उत्तर: यदि आपके पास कोई अच्छा कारण है तो आप परिवर्तनीय संरचनाओं का उपयोग कर सकते हैं। बेहतर उत्तर पाने के लिए आपको इसे एक अधिक विशिष्ट, अलग प्रश्न के रूप में पूछना होगा। –

संबंधित मुद्दे

 संबंधित मुद्दे