Windows 8上的"InternalIOException getAddrInfo:不存在(错误10093)"

The*_*ost 10 windows haskell http conduit http-conduit

为什么这么简单的代码不起作用?

import Network.HTTP.Conduit
import qualified Data.ByteString.Lazy as L

main :: IO ()
main = simpleHttp "http://www.dir.bg/" >>= L.putStr
Run Code Online (Sandbox Code Playgroud)

它会导致以下错误:

TestConduit.exe:InternalIOException getAddrInfo:不存在(错误10093)

The*_*ost 15

您必须使用withSocketsDo来初始化套接字.像这样:

import Network.HTTP.Conduit
import qualified Data.ByteString.Lazy as L
import Network (withSocketsDo)

main :: IO ()
main = withSocketsDo
      $ simpleHttp "http://www.dir.bg/" >>= L.putStr
Run Code Online (Sandbox Code Playgroud)

  • 实际上,如果在Windows上,你应该总是使用`withSocketsDo`.那你永远不会有这个问题.:-) (3认同)
  • @The_Ghost或设计使得良好类型的代码不会爆炸,对吗?在haskell中,这种事情真的没有任何借口. (3认同)