2

嗨,我是 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
4

1 回答 1

5

一个非常简单的方法如下。这使用了警卫

fun x y
   | x < -1.0 || x > 1.0 || y < 1.0 || y > 2.0 = error "Value out of range"
   | otherwise = x + y

有关报告和处理错误的一系列日益复杂和复杂的方法,请参见此处。

Maybe正如 ivanm 指出的那样,有时一种类型更可取。这是一个完整性示例:

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)
于 2012-05-08T03:31:40.167 回答