Skip to content

Commit b63fc84

Browse files
committed
Begin to explain pattern-matching against record values
1 parent 03d55e0 commit b63fc84

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

assets/18.md

+13-7
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ greetEach = map (("Hello, " ++) . (++ "!"))
753753
[1]: https://qiita.com/necojackarc/items/1bccc9643857d3ce7896
754754
[2]: https://wiki.haskell.jp/Hikers%20Guide%20to%20Haskell#%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%83%95%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%82%E3%82%8B%E3%81%84%E3%81%AF%E6%A7%98%E3%80%85%E3%81%AA%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%A8%E3%81%AE%E4%BB%98%E3%81%8D%E5%90%88%E3%81%84%E6%96%B9
755755

756-
### ラムダ抽象や関数の引数でのパターンマッチ
756+
### 関数の引数でのパターンマッチ
757757

758758
これまで、パターンマッチを行う際は`case`式を使うよう説明してきました:
759759

@@ -827,20 +827,26 @@ fib n = fib (n - 2) + fib (n - 1)
827827

828828
[3]: https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0#%E6%A6%82%E8%A6%81
829829

830-
#### レコード型に対する関数の引数でのパターンマッチ
830+
#### レコード型に対するパターンマッチ
831831

832-
自分で定義した型でもOK!
832+
今度は、レコード型の値をパターンマッチする際に使える構文を紹介します。
833833

834-
※ここと次のタプルの節で紹介するパターンマッチは`case`式でも使えますが、特に引数でのパターンマッチで使うことが多いです。
834+
例として用いるレコード型は、お馴染み`Entry`型です:
835835

836-
例えばおなじみ`Entry`型を使って
837-
838-
```
836+
```haskell
839837
data Entry =
840838
Entry { category :: String, price :: Integer }
841839
deriving Show
842840
```
843841

842+
レコード型の値に対するパターンマッチは二つ方法がありますまずはレコード型のラベルを宣言した順に従って各フィールドの値を変数に代入する方法です`Entry`型に対してこの方法を用いた場合次のような構文で引数を宣言します:
843+
844+
```haskell
845+
f (Entry cat pri) = {- ...ここで category が入った cat を、と price が入った pri を使う式 ... -}
846+
```
847+
848+
hoge
849+
844850
値コンストラクター`Entry`の第一引数にあたる`category`、第二引数にあたる`price`、それぞれにパターンマッチできる!
845851

846852
```

0 commit comments

Comments
 (0)