Отсутствует конструктор данных HostAny в Haskell

Я экспериментирую с 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'

person jap    schedule 09.05.2014    source источник


Ответы (1)


Если вы посмотрите на документации для conduit-extras вы увидите

данные HostPreference

Какой хост привязать.

Примечание. Экземпляр IsString распознает следующие специальные значения:

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

Это говорит мне, что вы должны использовать расширение OverloadedStrings, а затем вы можете просто написать свой код как

main = runTCPServer (serverSettings 8900 "*") serverApp

Хотя я должен сказать, что это странный API, который выбрала эта библиотека. Лично я предпочел бы иметь возможность использовать IsString или явный конструктор в тех случаях, когда я не хочу использовать OverloadedStrings по какой-либо причине.

person bheklilr    schedule 09.05.2014