相关疑难解决方法(0)

文本或字节串

美好的一天.

我现在讨厌Haskell的一件事是用于处理字符串的数量.

首先我使用了原生的Haskell [Char]字符串,但是当我尝试开始使用hackage库时,完全失去了无休止的转换.每个包似乎都使用不同的字符串实现,有些采用自己手工制作的东西.

接下来我用Data.Text字符串和OverloadedStrings扩展名重写了我的代码,我选择了Text因为它有更广泛的功能集,但似乎很多项目更喜欢ByteString.
有人可以简短推理为什么要使用其中一个?

PS:顺便想怎么转换TextByteString

无法匹配期望类型 Data.ByteString.Lazy.Internal.ByteString 对抗推断类型文本 预期类型:IO Data.ByteString.Lazy.Internal.ByteString推断类型:IO文本

我试过encodeUtf8Data.Text.Encoding,但没有运气:

无法匹配期望类型 Data.ByteString.Lazy.Internal.ByteString 对抗推断类型Data.ByteString.Internal.ByteString

UPD:

谢谢你的回复,*Chunks的善良看起来像是要走的路,但我对结果感到有些震惊,我原来的功能看起来像这样:

htmlToItems :: Text -> [Item]
htmlToItems =
    getItems . parseTags . convertFuzzy Discard "CP1251" "UTF8"
Run Code Online (Sandbox Code Playgroud)

现在成了:

htmlToItems :: Text -> [Item]
htmlToItems =
    getItems . parseTags . fromLazyBS . convertFuzzy Discard "CP1251" "UTF8" . toLazyBS
    where
      toLazyBS t = fromChunks [encodeUtf8 t]
      fromLazyBS …
Run Code Online (Sandbox Code Playgroud)

string text haskell

76
推荐指数
3
解决办法
1万
查看次数

Data.Text vs String

虽然Haskell社区的一般意见似乎总是更好地使用Text而不是String,大多数维护的库的API仍然是面向我的事实String混淆了我.另一方面,有一些值得注意的项目,它们String完全被视为一个错误,并提供了Prelude所有String面向函数的实例,这些函数被它们的Text-counterparts 取代.

那么String除了向后兼容的标准Prelude兼容性和"交换制作intertia"之外,人们还有任何理由继续使用面向编写的API吗?与之Text相比,是否还有其他缺点String

特别是,我对此感兴趣,因为我正在设计一个库并试图决定使用哪种类型来表达错误消息.

string text haskell

73
推荐指数
4
解决办法
1万
查看次数

标签 统计

haskell ×2

string ×2

text ×2