2015年2月21日土曜日

Hacksellを少しいじってみた

お久しぶりです。今日はHacksellを少しいじってみて若干はまったところを書いておきたいと思います。え、四足ロボットはどうしたって?でははまったところを見てみましょう。
絶対値を出すプログラムを書いていたときに問題が発生しました。
プログラムは
abs::Int->Int
abs n = if n >= 0 then n else -n
です。
これを実行した時0以上の場合問題なく実行されるのですが、負の値を引数とした時に実行エラーが起こりました。
その原因と言うのはHaskellでは演算子と関数適用の優先順位が関数適用の方が上なんですね。つまりabs -5というのは(abs -)5と判断されます。これじゃあ、エラーが起きて当然ですね。
ですので実行時にabs (-5)として-5を一つの引数として実行すれば問題解決しました。

0 件のコメント:

コメントを投稿