嗨,我是haskell的新手,我正在尝试实施以下内容,但我无法做到正确
这是我正在尝试做的基本算法,假设你有
--define some basic example function
fun x y = x + y
--pseudo code for what i am trying to do
x >= -1.0 || x <= 1.0 --variables x must be within this range else ERROR
y >= 1.0 || y <= 2.0 --variables y must be within this range else ERROR
答案 0 :(得分:5)
一种非常简单的方法如下。这使用guard:
fun x y
| x < -1.0 || x > 1.0 || y < 1.0 || y > 2.0 = error "Value out of range"
| otherwise = x + y
See here用于报告和处理错误的一系列日益复杂和复杂的方法。
正如ivanm所指出的,有时候Maybe
类型更可取。以下是完整性的示例:
fun' :: Float -> Float -> Maybe Float
fun' x y
| x < -1.0 || x > 1.0 || y < 1.0 || y > 2.0 = Nothing
| otherwise = Just (x + y)