在函数中设置变量的限制并在haskell中返回错误

时间:2012-05-08 03:22:18

标签: haskell

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

1 个答案:

答案 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)