मैं अपने पहले "वास्तविक" हास्केल प्रोजेक्ट के रूप में एक सी # ऐप को हास्केल में परिवर्तित करने पर विचार कर रहा हूं। हालांकि मैं यह सुनिश्चित करना चाहता हूं कि यह एक परियोजना है जो समझ में आता है। ऐप ~ 15 धारावाहिक धाराओं से डेटा पैकेट एकत्र करता है जो लगभग 1 किलोहर्ट्ज पर आते हैं, उन मानों को मेरे "संदर्भ" ऑब्जेक्ट पर संबंधित सर्कुलर बफर में लोड करते हैं, प्रत्येक ~ 25000 तत्वों के साथ, और फिर 60 हर्ट्ज पर उन सरणी को ओपनजीएल में भेजता है तरंग प्रदर्शन। (इस प्रकार में एक सरणी के रूप में संग्रहीत किया जा सकता है, या कम से कम प्रत्येक 16 एमएस में सरणी में परिवर्तित किया जाता है)। मेरे संदर्भ ऑब्जेक्ट पर लगभग 70 फ़ील्ड भी हैं जो मैं केवल वर्तमान (नवीनतम) मान को बनाए रखता हूं, न कि स्ट्रीम वेवफ़ॉर्म।क्या हास्केल में स्ट्रीम रिकॉर्डिंग के लिए तेज़ बड़े गोलाकार बफर सरणी बनाना संभव है?
इस परियोजना के कई पहलू हैं जो हास्केल को अच्छी तरह से मैप करते हैं, लेकिन जिस चीज के बारे में मुझे चिंता है वह प्रदर्शन है। यदि किसी भी स्ट्रीम में प्रत्येक नए डेटापॉइंट के लिए, मुझे पूरे संदर्भ वस्तु को 70 फ़ील्ड और 15 25000-तत्व सरणी के साथ क्लोन करना है, जाहिर है कि प्रदर्शन के मुद्दे होने जा रहे हैं।
क्या मैं आईओ-मोनड में सबकुछ डालकर इसे प्राप्त करूंगा? लेकिन फिर ऐसा लगता है कि हास्केल का उपयोग करने के उद्देश्य को कुछ हद तक हराया गया है, है ना? इसके अलावा सी # में मेरा सभी कोड घटना संचालित है; क्या हास्केल में उसके लिए एक मुहावरे है? ऐसा लगता है कि श्रोता जोड़ने से "साइड इफेक्ट" बन जाता है और मुझे यकीन नहीं है कि यह वास्तव में कैसे किया जाएगा।