gpt4 book ai didi

haskell - String -> ByteString 并反转

转载 作者:行者123 更新时间:2023-12-04 18:33:01 26 4
gpt4 key购买 nike

在我的 Haskell 程序中,我需要使用 Strings 和 ByteStrings:

import Data.ByteString.Lazy as BS  (ByteString)
import Data.ByteString.Char8 as C8 (pack)
import Data.Char (chr)

stringToBS :: String -> ByteString
stringToBS str = C8.pack str

bsToString :: BS.ByteString -> String
bsToString bs = map (chr . fromEnum) . BS.unpack $ bs
bsToString工作正常,但 stringToBS编译时出现以下错误:
Couldn't match expected type ‘ByteString’
with actual type ‘Data.ByteString.Internal.ByteString’
NB: ‘ByteString’ is defined in ‘Data.ByteString.Lazy.Internal’
‘Data.ByteString.Internal.ByteString’
is defined in ‘Data.ByteString.Internal’
In the expression: pack str
In an equation for ‘stringToBS’: stringToBS str = pack str

但我需要让它成为 ByteString来自 Data.ByteString.Lazy as BS (ByteString)用于我的代码中的进一步工作功能。

知道如何解决我的问题吗?

最佳答案

您正在使用两种不同类型的严格 ByteString 和惰性 ByteString。

本次进口:

import Data.ByteString.Lazy as BS  (ByteString)

使 ByteString引用懒惰的 ByteStrings,所以你的 stringToBS 的类型签名不符合它的定义:
stringToBS :: String -> ByteString  -- refers to lazy ByteStrings
stringToBS str = C8.pack str -- refers to strict ByteStrings

我认为使用 import qualified 会是一个更好的主意像这样:
import qualified Data.ByteString.Lazy as LBS
import qualified Data.ByteString.Char8 as BS

并使用 BS.ByteStringLBS.ByteString引用严格/懒惰的 ByteStrings。

关于haskell - String -> ByteString 并反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121340/

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