今日は条件分岐を使う。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なのか、それ以外の数値なのかを判定して、結果を出力できるようになった。