एक हाथ, हास्केल Vector a
में संख्याओं की सरणी के रूप में उपयोग करने के लिए पसंदीदा प्रकार प्रतीत होता है। यहां तक कि एक (अपूर्ण) Vector Tutorial भी है।हास्केल वैक्टर के साथ समांतर कोड कैसे लिखें?
दूसरी ओर, Control.Parallel.Strategies
अधिकतर Traversable
के संदर्भ में परिभाषित किया गया है। वेक्टर पुस्तकालय इन उदाहरणों को प्रदान नहीं करता है।
Traversable t
के न्यूनतम पूरा परिभाषा भी परिभाषित करना चाहिए Foldable
और
traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
sequenceA :: Applicative f => t (f a) -> f (t a)
मैं नहीं दिख रहा है कि कैसे sequenceA
Data.Vector.Unboxed.Vector
के लिए परिभाषित किया जा सकता है। तो, अनबॉक्स किए गए वैक्टर के साथ समांतर कोड लिखने का सबसे अच्छा तरीका क्या है? evalVector
जैसी कुछ नई विज्ञापन रणनीतियों को परिभाषित करना या par
और pseq
स्पष्ट रूप से या वैक्टरों के बजाय सादे Data.Array
का उपयोग करना?
पीएस सादा Array
रों समस्याओं के बिना चलाने योग्य हैं: https://gist.github.com/701888
कुछ फल दिखाने के लिए डीपीएच के लिए थोड़ा चिंतित हो रहा है, है ना? –
ठीक है, तरह। मैं हास्केल में संख्यात्मक कोड लिखना चाहता हूं, और अभी तक समझ में नहीं आता कि मुझे इसके लिए क्या उपयोग करना चाहिए। – sastanin
मुझे नहीं लगता कि पैरावेक्टर का आपका संस्करण काम करेगा: 'rseq' किसी भी तत्व का मूल्यांकन नहीं करेगा (इसका एकमात्र डब्ल्यूएचएनएफ) और' वी। कॉनकैट 'एक अनावश्यक ओ (एन) ऑपरेशन है - हम कोशिश कर रहे हैं तत्वों की गणना को मजबूर करें, एक नया वेक्टर बनाने की कोई आवश्यकता नहीं है। –