शायद मैं इस बारे में गलत तरीके से जा रहा हूँ के अंदर एक आईओ इकाई कॉलिंग, लेकिन मैं कुछ शीर्ष डेटा है कि मैं HOpenGL में एक सरणी में उपयोग करना चाहते हैं में पढ़ने के लिए HXT उपयोग कर रहा हूँ। वेरटेक्स सरणी को एक पीआरआर होना चाहिए जो न्यूएरे को कॉल करके बनाया गया हो। दुर्भाग्यवश न्यूएरे एक आईओ पीआरआर लौटाता है, इसलिए मुझे यकीन नहीं है कि तीर के अंदर इसका उपयोग कैसे किया जाए। मुझे लगता है कि मुझे आईओ के समान एक प्रकार की घोषणा के साथ कुछ चाहिए -> तीर ए?एक तीर
एक तीर
उत्तर
प्रकार IO a -> Arrow a
मतलब नहीं है; Arrow
एक प्रकार वर्ग, नहीं एक विशेष प्रकार, Monad
या Num
की तरह ज्यादा है। विशेष रूप से, Arrow
का एक उदाहरण एक प्रकार का कन्स्ट्रक्टर है जो दो पैरामीटर लेता है जो उन चीजों का वर्णन करता है जो कार्यों की तरह बनाये जा सकते हैं, मिलान प्रकारों को अंत तक अंत तक। तो, IO a
को एक तीर में परिवर्तित करने के लिए शायद एक वैचारिक प्रकार त्रुटि कहा जा सकता है।
मुझे यकीन है कि आप क्या करने की कोशिश कर रहे हैं कि वास्तव में क्या नहीं कर रहा हूँ, लेकिन अगर आप वास्तव में एक Arrow
के हिस्से के रूप IO
संचालन का उपयोग किया जा करना चाहते हैं, तो आप अपने Arrow
उदाहरण की जरूरत है कि शामिल करने के लिए। इसका सबसे सरल रूप यह है कि किसी भी Monad
उदाहरण के लिए a -> m b
जैसे प्रकारों के साथ कार्यों को स्पष्ट तरीके से बनाया जा सकता है।
newtype IOSLA s a b = IOSLA { runIOSLA :: s -> a -> IO (s, [b]) }
यह IO
, State
, और []
monads के कुछ मिश्रण है, एक समारोह से जुड़ी इस तरह के ऊपर है कि आप रचना कर सकते हैं के रूप में उन्हें तीनों Monad
रों माध्यम से जा रहा: hxt
पैकेज एक और अधिक जटिल प्रकार प्रदान करने के लिए लगता है प्रत्येक चरण में। मैं वास्तव में hxt
ज्यादा इस्तेमाल नहीं किया है, लेकिन अगर ये हैं Arrow
रों आप के साथ काम कर रहे हैं, यह बहुत एक मनमाना IO
एक के रूप में सेवा करने के लिए समारोह लिफ्ट करने के लिए आसान है - बस अपरिवर्तित के माध्यम से राज्य मूल्य s
गुजरती हैं, और उत्पादन की बारी एक सिंगलटन सूची में समारोह का। आपके लिए यह करने के लिए पहले से ही एक समारोह हो सकता है, लेकिन मैंने एक संक्षिप्त नज़र में एक नहीं देखा।
liftArrIO :: (a -> IO b) -> IOSLA s a b
liftArrIO f = IOSLA $ \s x -> fmap (\y -> (s, [y])) (f x)
- 1. तीर
- 2. एक तीर → चरित्र .bat स्क्रिप्ट
- 3. स्विंग: तीर
- 4. ऊपर-तीर
- 5. गोल तीर
- 6. को तीर
- 7. तीर कुंजी
- 8. तीर कुंजी जब एक GNU स्क्रीन सत्र
- 9. कॉफीस्क्रिप्ट, जब तीर तीर (=>) पर तीर (=>) और इसके विपरीत
- 10. तीर एंटी-पैटर्न
- 11. तीर कुंजी घटनाएं
- 12. शापित तीर कुंजियां
- 13. सीएसएस ओवरलैपिंग तीर
- 14. सी # और तीर कुंजी
- 15. लाल तीर आइकन
- 16. ggplot2 ध्रुवीय भूखंड तीर
- 17. ट्रैपिंग तीर कुंजियां
- 18. jQuery संवाद में तीर
- 19. कीबोर्ड ऊपर और तीर
- 20. Jquery तीर कुंजी नेविगेशन
- 21. d3 ड्राइंग तीर सुझावों
- 22. टाइपप्रति समारोह तीर वस्तु
- 23. तीर कुंजियां sqlplus
- 24. JQuery TableSorter: सॉर्टिंग तीर
- 25. setDisplayHomeAsUpEnabled() + ऊपर तीर?
- 26. यूनिकोड प्रतीकों (तीर) जावा
- 27. NSPopUpButton तीर रंग
- 28. मैं एक विंडो को दूसरी तीर पर इशारा करते हुए एक तीर के साथ कैसे बना सकता हूं?
- 29. एचटीएमएल कैनवास - घुमावदार तीर बनाएं
- 30. तीर() अब समर्थित नहीं है
[ 'arrIO'] (http://hackage.haskell.org/packages/archive/hxt/9.1.4/doc/html/:
मूल रूप से, आप कुछ इस तरह चाहते हैं नियंत्रण-तीर-तीरियो.html # वी: एआरआईओ) वह दिखता है जिसे वह ढूंढ रहा है। इसका कार्यान्वयन मूल रूप से आपके समान है। – hammar
@hammar: * आह! * धन्यवाद, किसी कारण से मुझे लगता है कि यह नाम में "लिफ्ट" होगा। –
अहह हाँ, यह ठीक है! हर बार जब मुझे लगता है कि मुझे तीरों और मोनैड मिल गए हैं तो मैं उन्हें फिर से बाहर निकालने के लिए हवादार हूं ... – John