7

मुझे बस बूस्ट फीनिक्स लाइब्रेरी (आत्मा प्रोजेक्ट में छिपा हुआ) और कार्यात्मक-प्रोग्रामिंग शैली के प्रशंसक के रूप में पता चला (लेकिन अभी भी एक शौकिया; कुछ छोटा हैकेल और योजना के साथ अनुभव) मैं इस पुस्तकालय के साथ इस पुस्तकालय के उचित अनुप्रयोगों के बारे में जानने के लिए इस पुस्तकालय के साथ खेलना चाहता था।आलसी मूल्यांकन पर ध्यान केंद्रित करने के साथ बूस्ट फीनिक्स लाइब्रेरी को समझना और उसका उपयोग करना

अभिव्यक्ति और fp-शैली का उपयोग कोड की स्पष्टता के increasement इसके अलावा, मैं विशेष रूप से कम लागत पर संगणना को तेज करने के लिए आलसी मूल्यांकन में दिलचस्पी रखता हूँ। वहाँ समस्या मार्ग है, जो एक eucliedean दूरी मैट्रिक्स उपयोग कर रहा है (चम्मच) की तरह किसी तरह का है:

एक छोटा सा और सरल उदाहरण निम्नलिखित होगा। हम मानते हैं कि दूरी मैट्रिक्स के कुछ मूल्यों का कभी भी उपयोग नहीं किया जाता है, और कुछ अक्सर उपयोग किए जाते हैं (इसलिए प्रत्येक कॉल के लिए उन्हें फ्लाई पर गणना करना एक अच्छा विचार नहीं है)। अब आलसी डेटा-संरचना दूरी मान रखने के लिए उचित लगता है। फीनिक्स के साथ यह कैसे संभव होगा? (इस तथ्य को अनदेखा कर रहा हूं कि मुझे आसानी से एफपी-स्टाइल-प्रोग्रामिंग के बिना किया जाएगा) फीनिक्स के आधिकारिक दस्तावेज को पढ़ने से मुझे जवाब देने के लिए पर्याप्त समझ नहीं आया।

क्या यह संभव है? (उदाहरण के लिए हास्केल में थंक्स बनाने की क्षमता जो गारंटी दे रही है कि मूल्य की गणना बाद में भाषा के मूल में हो सकती है)।

फीनिक्स में परिभाषित सभी आलसी कार्यों के साथ वेक्टर का उपयोग करने का क्या अर्थ है? जैसा कि मैं बेवकूफ हूं, मैंने यादृच्छिक मानों के साथ दो मैट्रिस (वेक्टर>) भरने की कोशिश की, एक सामान्य push_back के साथ, दूसरा बूस्ट :: फीनिक्स :: push_back के साथ और इन matrices से केवल कुछ ही मूल्यों को पढ़ने की कोशिश की और प्रिंटिंग के लिए उन्हें एक कंटेनर में स्टोर करें। आलसी एक खाली खाली था। क्या मैं गलत तरीके से फीनिक्स का उपयोग कर रहा हूं/यह संभव होना चाहिए? या मैंने फीनिक्स में कंटेनर/एल्गोरिदम के कार्य को गलत समझा। बाद वाले व्यक्ति के लिए एक छोटा सा सुराग एफपी ++ लाइब्रेरी में एक विशेष सूची-डेटा-संरचना का अस्तित्व है, जो फीनिक्स को प्रभावित करता है।

इसके अतिरिक्त:

  • क्या आप के लिए फोनिक्स उपयोग कर रहे हैं?
  • क्या आप फीनिक्स के बारे में कुछ अच्छे संसाधनों को जानते हैं? (ट्यूटोरियल, ब्लॉग प्रविष्टियां ...)

आपके सभी इनपुट के लिए धन्यवाद!

+3

मैं आपको फीनिक्स से दूर रहने की सलाह दूंगा। मुझे एफपी भी पसंद है, लेकिन सी ++ में एफपी हास्केल में उत्परिवर्तन की तुलना में भी अधिक है (वे सिर के लिए सिर होंगे लेकिन सी ++ पहले से ही बदसूरत है और हैस्सेल लैरी वॉल के अनुसार, सबसे खूबसूरत भाषा है)। जानें और एफपी का उपयोग करें, और जब आप इसमें अच्छे हों और सी ++ का उपयोग करने के लिए मजबूर हो, तो फीनिक्स का उपयोग करें। लेकिन सीखने के लिए, एक पुस्तकालय जो पहले से ही जटिल भाषा पर पूरी तरह से अलग प्रतिमान पैदा करता है, सलाह नहीं दी जाती है। – delnan

+0

काफी निराशाजनक: - /। लेकिन मुझे तुम्हारा मुद्दा मिला। हो सकता है कि मैं सी ++ जैसी वास्तव में जटिल भाषा में एफपी-फीचर्स के उपयोग की आसानी के बारे में थोड़ा आशावादी था। धन्यवाद चार आपका जवाब। – sascha

+0

@ डेलनान: क्या आप अपनी टिप्पणी को उत्तर में बदल सकते हैं? ऐसा लगता है कि सस्चा संतुष्ट है, और यह "अनुत्तरित" क्वेरी पर उच्च है। –

उत्तर

4

अनुरोध किया के रूप में, मेरी टिप्पणी एक जवाब के रूप (यह जोड़ और छोटे संशोधनों के साथ) ...

मैं अपनी स्थिति को वास्तव में पता है, मैं भी (फीनिक्स के साथ चारों ओर खेला हालांकि मैं बहुत गहरा में खुदाई नहीं था, ज्यादातर बूस्ट :: स्पिरिट ट्यूटोरियल पढ़ने का एक उपज) कुछ समय पहले, कार्यात्मक बग को पकड़ने और बुनियादी हास्केल सीखने के तुरंत बाद - और मुझे कुछ भी काम नहीं मिला :(यह मेरे सामान्य अनुभव के साथ अंधेरे टेम्पलेट जादू के साथ synch में btw है : गलत समझना, स्क्रू करना और चेहरे पर पूरी तरह से अप्रत्याशित व्यवहार या अचूक त्रुटि संदेशों के साथ छेड़छाड़ करना बहुत आसान है।

मैं आपको सलाह देता हूं कि आप फीनिक्स से दूर रहें IME। मुझे एफपी भी पसंद है, लेकिन सी ++ में एफपी हास्केल में उत्परिवर्तन की तुलना में भी अधिक है (वे सिर के लिए सिर होंगे लेकिन सी ++ पहले से ही बदसूरत है और हास्केल कम से कम लैरी वॉल के अनुसार, सबसे खूबसूरत भाषा है;))। जानें और एफपी का उपयोग करें, और जब आप इसमें अच्छे हों और सी ++ का उपयोग करने के लिए मजबूर हो, तो फीनिक्स का उपयोग करें।लेकिन सीखने के लिए, एक पुस्तकालय जो पहले से ही जटिल भाषा (यानी सी ++ में एफपी) पर पूरी तरह से अलग प्रतिमान को बोल्ट करता है, सलाह नहीं दी जाती है।

+4

(-1) एफपी सी ++ में बीटिफुल है, कंपाइलर तकनीक और सी ++ मानक सी ++ में एफपी प्रथम श्रेणी के नागरिकों को बनाने के लिए विकसित हो रहे हैं। सी ++ एफपी एक रनटाइम निष्पादन इंजन की आवश्यकता वाले कुशल कोड बनाम उत्पन्न करता है। मुझे संदेह है कि आप गलत हैं और क्रोध में सी ++ एफपी का उपयोग करने की कोशिश नहीं की है और पहली बाधा में बदल गए हैं। सी ++ असली दुनिया सिस्टम डिज़ाइन के लिए है, एफपी रखने के लिए बेहतर है कि आप वास्तविक दुनिया की समस्याओं के लिए इसका उपयोग नहीं कर सकते हैं .... इसे सही सी ++ एफपी कोड को समझें और लिखें और आपको निबंध नहीं मिलेगा कंपाइलर संदेश। –

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