के साथ "अनुमान नहीं किया जा सका" त्रुटि जब मैं इस संकलन करने का प्रयास करें:हास्केल: runST
module Main where
import qualified Data.Vector.Unboxed.Mutable as MV
import Control.Monad.ST
myRead mv = runST $ MV.read mv 0
मैं निम्न त्रुटि संदेश मिलता है:
Could not deduce (t ~ U.MVector s a)
from the context (U.Unbox a)
bound by the inferred type of myRead :: U.Unbox a => t -> a
at src/Main.hs:53:1-32
`t' is a rigid type variable bound by
the inferred type of myRead :: U.Unbox a => t -> a
at src/Main.hs:53:1
Expected type: U.MVector (PrimState (ST s)) a
Actual type: t
In the first argument of `MV.read', namely `mv'
In the second argument of `($)', namely `MV.read mv 0'
In the expression: runST $ MV.read mv 0
मैं एक परिवर्तनशील वेक्टर से पढ़ने बना सकते हैं रनस्ट के साथ शुद्ध? यदि हां, तो कैसे? मुझे लगता है कि यह myRead
के लिए एक प्रकार के हस्ताक्षर में शामिल है, लेकिन मैंने जो भी कोशिश की है, वह सिर्फ अधिक से अधिक समझ में त्रुटि संदेशों का कारण बनता है।
संपादित: कुछ संदर्भ मैं सिर्फ नीचे एक टिप्पणी में डाल उजागर: संदर्भ यहाँ, कि मैं एक समारोह है कि एक परिवर्तनशील वेक्टर में लेता है एक अस्थायी खरोंच स्पेस दें, फिर जरूरतों के रूप में परिवर्तनशील वेक्टर का उपयोग कर कुछ संगणना करता है एक फ्लोट वैल्यू वापस करने के लिए। क्योंकि मुझे म्यूटेबल वेक्टर में हुए बदलावों की परवाह नहीं है, इसलिए मैं सोच रहा था कि क्या इसके "राज्य परिवर्तन" को अनदेखा करने का कोई तरीका है और बस इसके अंदर से मूल्यों में से एक को वापस कर दें।
मुझे लगता है कि बुद्धिमानों की राय, जैसे ब्रेटनर और फिशर, यह है कि हमें इस बिंदु पर आप कैसे पहुंचे इस बारे में और जानना होगा। म्यूटेबल वेक्टर का उत्पादन करने का क्या काम है जो आप मेरे रीड को लागू करने का प्रस्ताव देते हैं? Breitner की प्रतिक्रिया में अंतिम वाक्य देखें। अगर हम जानते थे कि आपको इस कोने में क्या रखा गया था, तो हम कह सकते हैं कि चीजों का दोबारा विश्लेषण कैसे करें ताकि वे एक साथ लटका सकें। इस प्रकार कोड की कुछ और पंक्तियां सहायक होंगी। उदाहरण के लिए, यदि 'एमवी' एसटी ब्लॉक के अंदर है, तो सरल परिभाषा' myRead mv = mV.read mv 0' (no 'runST') का उपयोग नहीं किया जा सकता है। – applicative
मुझे आवेदक ने जो कहा है उसे मजबूत करने दें: हमें अधिक संदर्भ की आवश्यकता है। यह जानने के बिना कि आप वास्तव में क्या हासिल करना चाहते हैं, हम उचित समाधान नहीं ढूंढ सकते हैं। –