gpt4 book ai didi

haskell - 在 Haskell 中执行断言

转载 作者:行者123 更新时间:2023-12-05 08:17:17 25 4
gpt4 key购买 nike

假设我有一个计算两个数字之和的函数:

computeSum :: Int -> Int -> Int
computeSum x y = x + y

对于上述函数的返回值,是否有任何形式的控制,我只想将两个数字相加,其中它们的< strong>sum 将非负且必须小于 10

我刚刚从命令式开始函数式编程,我们可以在命令式编程中对函数的返回值进行简单的检查,例如:

if value <= 10 and value > 0:
return value

只是想知道在 haskell 中是否有类似的东西?

最佳答案

通常 ones 使用 Maybe 来指定“可能会失败”的计算,例如:

computeSum :: Int -> Int -> <b>Maybe Int</b>
computeSum x y | result > 0 && result <= 10 = <b>Just</b> result
| otherwise = <b>Nothing</b>
where result = x + y

因此,如果断言匹配,它将返回一个Just result,如果断言不满足,它将返回Nothing

有时 Either String a 用于提供错误消息,例如:

computeSum :: Int -> Int -> <b>Either String Int</b>
computeSum x y | result > 0 && result <= 10 = <b>Right</b> result
| otherwise = <b>Left</b> "Result is note between 0 and 10"
where result = x + y

您也可以引发错误,但我个人认为这是不可取的,因为签名不会“暗示”计算可能会失败:

computeSum :: Int -> Int -> <b>Int</b>
computeSum x y | result > 0 && result <= 10 = result
| otherwise = <b>error</b> "result is not between 0 and 10"
where result = x + y

关于haskell - 在 Haskell 中执行断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803806/

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