2012-05-08 16 views
2

に賢明な他のエラーを返します私は何をしようとしているの基本的なアルゴリズムを使用すると、次のようにこれを行うにはこんにちは私はのhaskellする新たなんだと私は次のことを実現しようとしていると私はかなりここに右</p> <p>それを得ることはできませんされた関数内の変数の上限を設定し、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 

答えて

5

非常に単純な方法がある持って言うことができます。報告し、エラーを処理するために、ますます複雑かつ洗練された方法一連の

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:これはguardを使用しています。

時には、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) 
+4

一般に、「エラー」ではなく「おそらく」のようなものを使用することが一般的です。 – ivanm

+0

@ivanm:発信者が予期するのが容易かどうかによって異なります。たとえば、関数の引数が常に正の値である必要がある場合は、関数が使用されるたびに呼び出し側が 'Maybe 'を処理することを期待するのではなく、例外をスローすることは合理的です。パーサーのようなものでは、解析の失敗がどこでも合理的に発生する可能性があります。確かに - 「多分」か類似しているのは間違いありません。 – MathematicalOrchid

+1

@ivanm、あなたは正しい - 私はそれを単純に保っていたが、完全性のための例を追加した。 – senderle

関連する問題

 関連する問題