Haskellの始め方(3)条件分岐とパターンマッチング

 

 

1.パターンマッチング(case式)

 式の値がパターンにマッチするかしないかを判定する仕組み。

 

getValue defval maybe =
  case maybe of
    Nothing -> defval
    Just x  -> x

main = do
  print (getValue 0 Nothing)   -- 出力: 0
  print (getValue 0 (Just 5))  -- 出力: 5

 

 

Nothing と Just x は maybe型で、

(1) Nothing 値が存在しないとき、

(2) Just x 値xが存在するとき、

使用します。

 

2.ガード(case式)

 パターンの後に、| で、条件式を記述する。

 

max' :: (Ord a) => a -> a -> a
max' a b
    | a <= b =b
    | otherwise =a

 

3.if式

if ... (条件式)then ...(式1) else ...(式2)

と書く。この時、then...else...以下は省略できない。

必ずelse以下も書かなければならないし、式1と式2は型が同じである

必要がある。

 

また、 if b then e1 else e2 という式は、次のcase式に相当する。

 

case b of
  True -> e1
  False -> e2

 

 

後でたぶん大幅に加筆修正する。(ソース例の部分を)

 

 

(参考)

http://walk.northcol.org/haskell/expressions/

https://books.google.co.jp/books/about/%E3%81%99%E3%81%94%E3%81%84Haskell%E3%81%9F%E3%81%AE%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%BC%E3%81%86.html?id=qU7A2leacv4C&printsec=frontcover&source=kp_read_button&redir_esc=y#v=onepage&q=%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3&f=false