2010-03-06 10 views
13

क्या लोकप्रिय कार्यात्मक भाषाओं की वर्तमान फसल में से किसी को याद रखना & के लिए अच्छा समर्थन है यदि मैं इसकी यादों की ताकत पर एक चुनना चाहता हूं तो आप & क्यों अनुशंसा करेंगे?ज्ञापन के लिए कार्यात्मक भाषाएं और समर्थन

अद्यतन: मैं एक निर्देशित ग्राफ को अनुकूलित करने के लिए देख रहा हूं (जहां नोड्स कार्य या डेटा हो सकते हैं)। जब ग्राफ़ में कोई नोड अपडेट किया जाता है तो मैं अन्य नोड्स के मानों को फिर से गणना करना चाहूंगा यदि वे नोड को बदलते हैं।

अद्यतन 2: निशुल्क या ओपन-सोर्स भाषा/रनटाइम की आवश्यकता है।

+1

दिलचस्प और प्रासंगिक http://stackoverflow.com/questions/1932968/why-memoization-is-not-a-language-feature – Joel

+0

आप Excel चाहते हैं ?? – nicolas

उत्तर

7

हास्केल के लिए, कोनल इलियट ने functional memo tries पर एक सुंदर ब्लॉग प्रविष्टि पोस्ट की है। यह काम असाधारण रूप से चालाक और काफी गहरा है, और बाद में कोनल ने इसे polymorphic functions तक बढ़ा दिया। कोई फर्क नहीं पड़ता कि आप किस भाषा का उपयोग करते हैं, इस सामान की अत्यधिक अनुशंसा की जाती है, क्योंकि यह कार्यात्मक भाषाओं में अंतर्निहित ज्ञापन गहरे विचारों को अनवरोधित करता है।

हालांकि, अपने अपडेट को देखते हुए, यह स्पष्ट नहीं है कि ज्ञापन वास्तव में आप चाहते हैं। आपकी विस्तारित समस्या कथन (निर्देशित ग्राफ के माध्यम से अपडेट का प्रचार) वृद्धिशील गणना का लगभग पाठ्यपुस्तक उदाहरण है, जिस पर बॉब हार्पर और Umut Acar द्वारा बहुत से काम किए गए हैं। मेरा मानना ​​है कि उनके पास मानक एमएल में लिखी गई एक मुफ्त लाइब्रेरी है। उमट के पेज को self-adjusting computation पर देखें।

+0

@ नॉर्मन - दिलचस्प लिंक के लिए धन्यवाद और अपडेट करते समय सहमत हुए, और इसके बारे में सोचा जाने के बाद, मुझे एहसास हुआ कि ज्ञापन शायद समाधान नहीं था .... लेकिन मैं अभी भी जानना चाहता हूं कि गहरा ज्ञापन समर्थन जा सकता है। – Joel

+0

स्व-समायोजन गणना पर दिए गए लिंक के बाद आप उपरोक्त शामिल हैं http://ttic.uchicago.edu/~umut/papers/toplas06.html जो वास्तव में वही दिखता है जो मैं चाहता हूं - एक "अनुकूली कार्यात्मक भाषा" .... "कॉल-बाय-वैल्यू फ़ंक्शनल भाषा अनुकूलीयता प्राइमेटिव के साथ विस्तारित है।" .... "एक अनुकूली कार्यक्रम निष्पादित होने के रूप में, अंतर्निहित प्रणाली गतिशील निर्भरता ग्राफ के रूप में निष्पादन में डेटा और नियंत्रण निर्भरताओं का प्रतिनिधित्व करती है। जब प्रोग्राम में इनपुट बदलता है, तो एक परिवर्तन प्रसार एल्गोरिदम आउटपुट और गतिशील अद्यतन करता है परिवर्तनों का प्रचार करके निर्भरता ग्राफ " – Joel

+0

पॉलिमॉर्फिक ज्ञापन (परिचालन जादू के बजाए गहरे और सुरुचिपूर्ण गुणों का उपयोग करके) के लिए एक और अधिक सुरुचिपूर्ण दृष्टिकोण के लिए, पोस्ट * [अनमोलोइज़ेशन के माध्यम से ज्ञापन पॉलीमोर्फिक फ़ंक्शंस] देखें (http://conal.net/blog/posts/memoizing-polymorphic-functions-through-unmemoization) *, जिसमें मुख्य रूप से डैन पिपोनी के पोस्ट * पर मेरे रोमिनेशन शामिल हैं [हाई स्कूल बीजगणित और क्वांटिफायर के साथ पॉलीमोर्फिक फ़ंक्शंस को याद रखना] (http://blog.sigfpe.com/2009/11/ memoizing-बहुरूपी-कार्यों-with.html) *। – Conal

4

हास्केल पर, this प्रारंभ के लिए देखें।

लिस्प के लिए, this Google की पहली हिट थी जो प्रासंगिक दिखती थी।

F # this के लिए शुरू करने के लिए एक अच्छी जगह हो सकती है।

अब मैं आपके लिए गुगलिंग कर रहा हूं। क्या यह अच्छा समर्थन है? आप तय करते हैं :-)

ओह, मैं गणित की सिफारिश करता हूं, लेकिन मैं समझता हूं कि बहुत से लोगों को इसके मूल्य टैग से हटा दिया जाता है। कड़ाई से बोलना यह संभवतः एक कार्यात्मक प्रोग्रामिंग सिस्टम की तुलना में एक शब्द-पुनर्लेखन प्रणाली का अधिक है, और यह शब्द की किसी भी इंद्रियों में शुद्ध नहीं है। लेकिन यह ज्ञापन करता है।

संपादित करें: मैं एरलांग भूल गया, जिस समय इस समय बहुत अधिक कर्षण है - मुझे नहीं पता कि मुझे कैसे उम्मीद है कि यह यादें कर सकता है।

3

हाँ, आप बिल्कुल याद नहीं करना चाहते हैं, आप सटीक निर्भरता ट्रैकिंग चाहते हैं। आप उर निर्देशित ग्राफ़ बनाने के लिए Haskell कार्यात्मक ग्राफ़ लाइब्रेरी (FGL) इस्तेमाल कर सकते हैं, तो ठीक पता करने के लिए उत्तराधिकारी फ़ंक्शन का उपयोग करें जो अद्यतन करने के लिए नोड: http://web.engr.oregonstate.edu/~erwig/fgl/

: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fgl

इस पत्र बहुत डॉक्स को समझने इंडस्ट्रीज़ सहायता करेगा

उत्तराधिकारी समारोह सफलता एक अलग दिशा में जा रहे हैं के नाम पर है मॉड्यूल Data.Graph.Inductive.Graph

में, एक लोकप्रिय कार्यात्मक भाषा है कि इस का समर्थन करता है एक्सेल है। :)

+0

पॉइंटर्स के लिए धन्यवाद। – Joel

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