gpt4 book ai didi

parsing - 将 Attoparsec 解析器转换为从另一种字符串类型解析

转载 作者:行者123 更新时间:2023-12-04 02:28:06 29 4
gpt4 key购买 nike

是否有一些“简单”的方法(例如我在 Attoparsec 或其他一些库中缺少的东西)将定义的 Attoparsec 解析器从 ByteString 解析为从 Text 解析的解析器?
例如我有:

import Data.Attoparsec.ByteString.Char8
myTypeByteStringParser :: Parser MyType
有什么方法可以将其转换为:
import Data.Attoparsec.Text
myTypeTextParser :: Parser MyType
它确实看起来像 contramap (来自 hoogling 类型签名)但可能无法为 Parser 定义逆变器?

最佳答案

我不确定这在一般情况下是否可行。 Parser Attoparsec 中定义的类型看起来它在修改输入类型时效果不佳。所以,如果你想结合一个 Text带有 ByteString 的解析器解析器,恐怕你不走运。
也就是说,如果您想要的是能够运行 ByteString某些输入的解析器 Text ,您可以先转换 Text 来解决这个问题。输入 ByteString .例如:

import Data.Text.Encoding
import Data.Attoparsec.ByteString.Char8

-- parse :: Parser a -> ByteString -> Result a
-- this is given by Attoparsec

parseText :: Parser a -> Text -> Result a
parseText p = parse p . encodeUtf8
同样,你可以转一个 Text解析器变成 ByteString一个使用 decodeUtf8 (或根据需要使用不同的编码器/解码器)。

关于parsing - 将 Attoparsec 解析器转换为从另一种字符串类型解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65961337/

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