संयोजन मैं कंड्यूट पैकेज के साथ प्रयोग कर रहा हूं। भी होने नेटवर्क नाली पैकेज नहीं मिला, मैं एक साधारण टीसीपी ग्राहक जो एक सॉकेट करने के लिए एक फ़ाइल की सामग्री भेजता करने की कोशिश की:कंडिट और नेटवर्क-कंडिट: मोनाड रिसोर्स और आईओ
import Data.Conduit
import Data.Conduit.Binary
import Data.Conduit.Network
import Data.ByteString.Char8 (pack)
sendFile fileName appData = runResourceT $
sourceFile fileName $$ appSink appData
main = runTCPClient (clientSettings 8000 (pack "localhost")) (sendFile "book.tex")
यह काम नहीं करता है, तथापि, के बाद से एप्लिकेशन सिंक नहीं रहते एक एक ResourceT:
[1 of 1] Compiling Main (Conduit2.hs, interpreted)
Conduit2.hs:9:63:
Occurs check: cannot construct the infinite type: m0 = ResourceT m0
Expected type: Application (ResourceT m0)
Actual type: AppData (ResourceT m0) -> m0()
In the return type of a call of `sendFile'
In the second argument of `runTCPClient', namely
`(sendFile "book.tex")'
Failed, modules loaded: none.
runResourceT के बिना, तथापि, यह स्पष्ट रूप से काम नहीं कर सकता या तो:
[1 of 1] Compiling Main (Conduit2.hs, interpreted)
Conduit2.hs:9:63:
No instance for (MonadResource IO)
arising from a use of `sendFile'
...etc...
मेरा अनुमान है कि मैं लपेट चाहिए appSink (जहां m = आईओ) ResourceT में बिनावास्तव में संसाधनों का प्रबंधन। लेकिन मैं यह नहीं समझ सकता कि यह कैसे करना है।
...?
चूंकि आपने यह अनुमान लगाया है कि इसे आपके उत्तर को सही के रूप में स्वीकार करना चाहिए। इस तरह यह एसओ की खोज में एक स्वीकार्य उत्तर के रूप में दिखाई देगा। – Davorak