Skip to content

Commit 7b1b980

Browse files
committed
Complete description of pattern-matching by order of the constructor fields
1 parent b132fa1 commit 7b1b980

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

assets/18.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -860,9 +860,11 @@ ghci> formatEntry entry
860860
"Magazine: 120"
861861
```
862862

863-
パターンマッチは入れ子になった構造の中の要素に対してもできるので、さらに`category`が空文字列のものを特別扱いしたくなったら:
863+
`Entry`型の値を受け取って、その`category``price`を使って文字列を作る`formatEntry`関数を定義しました。`formatEntry`関数の引数を宣言する部分で`(Entry cat pri)`と書いて`Entry`型の値にパターンマッチしています。こうすると`category``cat`に、`price``pri`という変数に割り当てられるので、`formatEntry`の本体では`cat ++ ": " ++ show pri`という式で利用しています。
864864

865-
```
865+
パターンマッチはレコード型の中の各フィールドに対してもできるので、例えば、`category`が空文字列のものを特別扱いしたくなったら、次のように値コンストラクター`Entry`の第一引数の箇所で、空文字列`""`にマッチさせます:
866+
867+
```haskell
866868
ghci> :{
867869
ghci| formatEntry :: Entry -> String
868870
ghci| formatEntry (Entry "" pri) = "<Unknown category>" ++ ": " ++ show pri
@@ -874,9 +876,9 @@ ghci> formatEntry entry
874876
"<Unknown category>: 999999999999999"
875877
```
876878

877-
ここでもカッコを忘れず
879+
⚠️いずれの場合も、値コンストラクター`Entry`とその引数の箇所をカッコで囲うのを忘れないでください
878880

879-
```
881+
```haskell
880882
ghci> :{
881883
ghci| formatEntry :: Entry -> String
882884
ghci| formatEntry Entry cat pri = cat ++ ": " ++ show pri

0 commit comments

Comments
 (0)