もしRubyistがHaskellを学んだら(8) ガード式による関数定義

タグ: learning_haskell / 公開: 2013-11-07

今日はHaskellでガード式を使った関数を定義してみることにした。ガード式を使って絶対値を求める関数を定義し、入力した値の絶対値を表示するプログラムを書く。Rubyで書き下すと以下を目標にする。

def abs v
	if v >= 0
		v
	else
		v * -1
	end
end

v = gets.to_i
puts v

Haskellではガード式を使って関数を定義することができる。ガード式はifの強化版のようなものだ。ガード式は|で並べて書く。以下はnが0以上ならnを、そうでなければ-nを返す関数だ。

myabs n | n >= 0 = n
        | otherwise = -n

入力値を受け取って数値に変換し、myabsで絶対値を求めて表示する一連のプログラムは以下のとおりだ。ガード式以外はこれまでの勉強の積み重ねでスムーズに書くことができた。

myabs n | n >= 0 = n
        | otherwise = -n

main = do
	s <- getLine
	let v = read s :: Int
	print (myabs v)
この記事をSNSでシェアする
タイトルとURLをコピーする
または投稿画面を開く
Author
Icon
ぺけみさお / xmisao
プログラマ。
Subscription
Recent articles
Related to learning_haskell