gpt4 book ai didi

haskell - 将 ByteString 转换为 Int 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 04:45:00 25 4
gpt4 key购买 nike

尝试读取 ByteString 时,我总是遇到以下错误:Prelude.read: no parse
以下是在浏览器中呈现时会导致此错误发生的代码示例:

factSplice :: SnapletSplice App App
factSplice = do
mbstr <- getParam "input" -- returns user input as bytestring
let str = maybe (error "splice") show mbstr
let n = read str :: Int
return [X.TextNode $ T.pack $ show $ product [1..n]]

或者更简单地说:
simple bs = read (show bs) :: Int

出于某种原因,在 show bs 之后结果字符串包括引号。
因此,为了避免错误,我必须删除引号,然后 read它。
我使用从互联网复制的以下功能来做到这一点:
sq :: String -> String
sq s@[c] = s
sq ('"':s) | last s == '"' = init s
| otherwise = s
sq ('\'':s) | last s == '\'' = init s
| otherwise = s
sq s = s

然后 simple bs = read (sq.show bs) :: Int按预期工作。
  • 为什么会这样?
  • 将 ByteString 转换为 Int 的最佳方法是什么?
  • 最佳答案

    转换 ByteString 的最佳方法是什么?到 X取决于 X .如果您从 String 转换得很好, 通过 Data.BytString.Char8.unpack可以很好,如果它是 ASCII ByteString .对于 UTF-8 编码 ByteString s, utf8-string包中包含转换函数toString .对于某些特定类型,例如 Int ,如标题中所述,存在特殊的更快转换。例如 Data.ByteString.Char8.readIntreadInteger .

    关于haskell - 将 ByteString 转换为 Int 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8887729/

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