gpt4 book ai didi

http - ByteString 需要不同的 ByteString

转载 作者:可可西里 更新时间:2023-11-01 16:11:15 31 4
gpt4 key购买 nike

此代码不进行类型检查:

import Network.HTTP.Conduit
import qualified Data.ByteString.Char8 as BS

main :: IO ()
main = do
resp <- simpleHttp "http://www.google.com"
putStrLn $ BS.unpack resp

抛出以下错误:

Couldn't match expected type `BS.ByteString'
with actual type `Data.ByteString.Lazy.Internal.ByteString'
In the first argument of `BS.unpack', namely `resp'
In the second argument of `($)', namely `BS.unpack resp'
In a stmt of a 'do' block: putStrLn $ BS.unpack resp
Failed, modules loaded: none.

如何解决这个问题?更改为其他 ByteString 变体不起作用。

simpleHttp函数的类型是这样的:simpleHttp
::Control.Monad.IO.Class.MonadIO m =>
字符串 -> m Data.ByteString.Lazy.Internal.ByteString
。因此,我尝试在 IO monad 中获取 ByteString 并尝试对其进行解包,但这会导致错误。

最佳答案

有两个独立的 ByteString 模块,一个用于惰性 ByteString,一个用于严格 ByteString。 simpleHTTP 返回惰性字节串,但您导入了严格字节串模块,因此解包需要严格字节串。

尝试改变

import qualified Data.ByteString.Char8 as BS

import qualified Data.ByteString.Lazy.Char8 as BS

也就是说,如果您使用 Char8 版本的 bytestring 模块,您需要小心,因为 String <-> ByteString 转换仅在您使用 ASCII 编码时才有效。我会推荐converting your bytestrings to Text使用适当的编码函数,然后打印它。

关于http - ByteString 需要不同的 ByteString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21115462/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com