1

我正在尝试使用 Conduit Network,但无法编译此代码,因为它找不到数据构造函数:HostAny

安装了conduit-extra,所以我很困惑为什么找不到它?

{-# LANGUAGE ScopedTypeVariables #-}
import Data.Conduit
import Data.Conduit.Network


serverApp :: AppData -> IO ()
serverApp d = do appSource d $$ appSink d

main :: IO()
main = runTCPServer (serverSettings 8900 HostAny) serverApp

这是 GHC 错误:

pez@devbox:~/dev$ runhaskell server.hs

server.hs:10:42: Not in scope: data constructor `HostAny'
4

1 回答 1

2

如果您查看的文档conduit-extras您会看到

数据主机偏好

绑定哪个主机。

注意: IsString 实例识别以下特殊值:

* means HostAny
*4 means HostIPv4
!4 means HostIPv4Only
*6 means HostIPv6
!6 means HostIPv6Only 

这告诉我您应该使用扩展程序OverloadedStrings,然后您可以将代码编写为

main = runTCPServer (serverSettings 8900 "*") serverApp

虽然我不得不说这是这个库选择的一个奇怪的 API。在我出于任何原因IsString不想使用的情况下,我个人更希望能够使用或显式构造函数。OverloadedStrings

于 2014-05-09T15:25:49.807 回答