Haskell 如何将自定义解码函数从'ByteString'写入'Text'`
假设我想写这样的东西:Haskell 如何将自定义解码函数从'ByteString'写入'Text'`,haskell,text,encoding,bytestring,Haskell,Text,Encoding,Bytestring,假设我想写这样的东西: -- | Decode a 'ByteString' containing Code Page 437 encoded text. decodeCP437 :: ByteString -> Text decodeCP437 = undefined (我知道编码软件包,但它的依赖项列表为这一个软件包付出了荒谬的代价,而且我相信它的功能相当琐碎。) 我的问题是如何从通过testring合理高效地构造文本,特别是在不使用列表的情况下。在我看来,Data.Text.En
-- | Decode a 'ByteString' containing Code Page 437 encoded text.
decodeCP437 :: ByteString -> Text
decodeCP437 = undefined
(我知道编码
软件包,但它的依赖项列表为这一个软件包付出了荒谬的代价,而且我相信它的功能相当琐碎。)
我的问题是如何从通过testring
合理高效地构造文本,特别是在不使用列表的情况下。在我看来,Data.Text.Encoding
应该是一个很好的灵感来源,但乍一看,它使用了和foreignptr
,我想对于我的用例来说,它的级别太低了
如何处理这个问题?简而言之,我想我需要通过testring不断地从中提取字节(Word8
),将每个字节翻译成相应的Char
,并以某种方式有效地从它们构建文本。对于Text
结构,inData.Text
的复杂性不足为奇地表明,逐个添加字符并不是最好的主意,但我看不到更好的工具
更新:我想创建严格的文本
。似乎唯一的选择是创建生成器,然后从中获得惰性的文本(O(n)),然后转换为严格的文本(O(n))。您可以使用API,它提供O(1)singleton::Char->builder
和O(1)():Builder->Builder->Builder
用于高效的构造操作。您可以使用API,它提供O(1)singleton::Char->Builder
和O(1)()::Builder->Builder->Builder
用于高效的构造操作。文本如何?文本如何?如果我想构造严格的文本如何?@标记“是”,我知道toStrict
,但这是对整个数据的另一次传递。不过,看起来这是唯一的选择。谢谢。如果我想构造严格的文本
,怎么办?@Mark Yes我知道关于toStrict
,但这是对整个数据的另一次传递。不过,看起来这是唯一的选择。谢谢