理想未来ってなんやねん

娘可愛い。お父さん頑張る。

Haskell 11日目

Haskell 11日目。

7章長いですね。
停滞していますが少しずつ進んでいきます。

Case式

関数の引数以外でもパターンマッチやガードを使いたいときにはcase式(case expression)が使えます。


case式の例

case str of
  ""     -> ""
  (c:cs) -> tuUpper c: cs

このcase式はstrの値が空文字なら空文字を返す、strの値が空文字でなければ、その1文字目を大文字にした文字列を返すと解釈される。

一般に、case式は次のように書く。パターンマッチだけ使う場合はガードは書かなくてもよい。

case str of
  パターンA | ガードA1 -> 式A1
            | ガードA2 -> 式A2
                  :         :
  パターンB | ガードB1 -> 式B1
            | ガードB2 -> 式B2
                  :         :
  パターンC | ガードC1 -> 式C1
            | ガードC2 -> 式C2
                  :         :

case式で使えるパターンは関数定義の引数とまったく変わらない。
ガードの意味も関数定義と変わらない。

case式のレイアウト

case式のof以降にはコードブロックがあるとみなされる。
明示的に『{』と『;』で区切っても構わない。


今日のところはここまで