gpt4 book ai didi

haskell - 在 Haskell 中实现 FSharp 的 Int32.TryParse

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

我喜欢 F# 中的 Int32.TryParse 函数,我想在 Haskell 中创建自己的函数:

import qualified Control.Exception as CE
handler:: CE.ErrorCall -> IO (Bool,Int)
handler e = return (False,0)
s2Int :: String->Int
s2Int s = read s
tryParse :: String -> IO (Bool,Int)
tryParse s = CE.catch (s2Int s `seq` return (True,read s)) handler

七行解析一个 Int?!有没有更短的方法?

谢谢...

最佳答案

您可以使用 reads :

tryParse :: String -> (Bool, Int)
tryParse s =
case reads s of
[(i, "")] -> (True, i)
_ -> (False, 0)

返回 Maybe Int 会更加惯用然而:
tryParse :: String -> Maybe Int
tryParse s =
case reads s of
[(i, "")] -> Just i
_ -> Nothing

关于haskell - 在 Haskell 中实现 FSharp 的 Int32.TryParse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26316450/

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