もしRubyistがHaskellを学んだら(5) 条件分岐
タグ: learning_haskell / 初版公開: 2013-11-04

今日は条件分岐を使う。Haskellで条件分岐をする方法は、いくつか種類があるようだが、馴染みのあるifを使ってみる。

ifによる条件分岐を使って、入力値に応じて異なるメッセージを出力するプログラムを書くことにする。

とはいえ、文字列の比較方法が良くわからなかった。そこでまず文字列を数値に変換してから、比較することにする。文字列から数値の変換はreadを使う。:: Intで文字列から整数への変換だと明示する。

read "123" :: Int

この結果を変数に代入(という概念はHaskellにはないが)したい。IO Strを束縛した時のように、<-でできるのかと思ったが、コンパイルエラーになった。試行錯誤した後、こういう場合はletを使えば良いとわかった。

let val = read "123" :: Int

ここまで来ればあとはプログラムを書き連ねるだけだ。ifは値を返さなければならないそうなので、ifで出力したいメッセージを切り分けるようにする。

main = do
	str <- getLine
	let val = read str :: Int
	let message = if val == 1
		then "input is 1"
		else "input is not 1"
	putStrLn message

これで入力値が1なのか、それ以外の数値なのかを判定して、結果を出力できるようになった。