gpt4 book ai didi

haskell - 如何从 Haskell 中的 read 函数捕获无解析异常?

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

在我的 Haskell 程序中,我想使用 getLine 函数读取用户给出的值。然后我想使用 read 函数将此值从字符串转换为适当的 Haskell 类型。如何捕获 read 函数抛出的解析错误并要求用户重新输入值?

我是否正确地认为这不是“IO 错误”,因为它不是由 IO 系统无法正常运行引起的错误?这是一个语义错误,所以我不能使用IO错误处理机制?

最佳答案

你不想。您想使用reads相反,可能是这样的:

maybeRead = fmap fst . listToMaybe . reads

(尽管如果元组的第二个元素不是 "" ,也就是说,如果还有剩余的字符串,您可能会想出错)

您想要使用读取而不是捕获的原因 error异常的优点是纯代码中的异常是邪恶的,因为很容易在错误的地方捕获它们:请注意,它们仅在被迫时才会飞行,而不是之前。找到它的位置可能是一项不简单的工作。这就是(原因之一)Haskell 程序员喜欢保持代码完整,即终止且无异常。

您可能想看看合适的解析框架(例如 parsec )和 haskeline ,也是。

关于haskell - 如何从 Haskell 中的 read 函数捕获无解析异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5121371/

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