Haskell 将动态字符串解析为HostPreference

Haskell 将动态字符串解析为HostPreference,haskell,haskell-warp,Haskell,Haskell Warp,使用时,setHost函数将不接受动态String作为主机值,但是它将非常乐意使用字符串文字: >导入Network.Wai.Handler.Warp >apiHost=“0.0.0.0”::字符串 >getHost$setHost(读取apiHost)默认设置 ***例外:Prelude.read:无解析 >getHost$setHost apiHost默认设置 :16:19:错误: •无法将类型“[Char]”与“主机首选项”匹配 预期类型:主机首选项 实际类型:字符串 >getHost$s

使用时,
setHost
函数将不接受动态
String
作为主机值,但是它将非常乐意使用字符串文字:

>导入Network.Wai.Handler.Warp
>apiHost=“0.0.0.0”::字符串
>getHost$setHost(读取apiHost)默认设置
***例外:Prelude.read:无解析
>getHost$setHost apiHost默认设置
:16:19:错误:
•无法将类型“[Char]”与“主机首选项”匹配
预期类型:主机首选项
实际类型:字符串
>getHost$setHost“0.0.0.0”默认设置
主机“0.0.0.0”
当值是字符串文字时,所有这些都可以正常工作,但当它是动态生成的字符串时,我找不到任何方法使其工作。这正是我需要的,因为主机值来自环境变量。

结果。。。像往常一样

String->HostPreference
--第一个结果:
--主机::字符串->主机首选项
--共享数据流。流。网络。内部
从那里

>导入数据.Streaming.Network.Internal(主机首选项(主机))
>apiHost=“0.0.0.0”::字符串
>getHost$setHost(主机apiHost)默认设置
主机“0.0.0.0”
结果是。。。像往常一样

String->HostPreference
--第一个结果:
--主机::字符串->主机首选项
--共享数据流。流。网络。内部
从那里

>导入数据.Streaming.Network.Internal(主机首选项(主机))
>apiHost=“0.0.0.0”::字符串
>getHost$setHost(主机apiHost)默认设置
主机“0.0.0.0”

我看到您专门为这个库找到了答案,但有一个更通用的解决方案。之所以能够使用字符串文字,是因为HostPreference是该类的实例(并且您启用了OverloadedStrings扩展)。这意味着您可以使用该类的
fromString
方法,因此
fromString(read-apiHost)
应该可以工作。

我看到您专门为这个库找到了答案,但有一个更通用的解决方案。之所以能够使用字符串文字,是因为HostPreference是该类的实例(并且您启用了OverloadedStrings扩展)。这意味着您可以使用该类的
fromString
方法,因此
fromString(readapihost)
应该可以工作