はじめに この記事は ScalaMatsuri 2023 で発表されるセッション「traverseを制する者はコードを制す」の補完記事です。セッション時間の都合上カットした traverse の実装面を焦点に解説します。 traverse がどういったシーンで役に立つのか等は本セッションをご参照ください。 使用する言語・ライブラリのバージョンは以下の通りです。 Scala 3.2.2 cats 2.7.0 構造を保ったまま要素に関数を適用する さて traverse とはどんな関数なのかと言うと、構造を保ったまま要素に関数を適用する関数です。 そう聞くと最近のメジャーな言語にはおおよそ存在している map の事を思い浮かべる方も居る事でしょう。 その通り map も構造を保ったまま要素に関数を適用する関数と言えます。 val list = List(1, 2, 3, 4, 5) list.
![map を使いこなせるあなたに traverse](https://cdn-ak-scissors.b.st-hatena.com/image/square/6216e81262225bf087a2889030a59f669ba060ad/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--St_9nWsd--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3Amap%252520%2525E3%252582%252592%2525E4%2525BD%2525BF%2525E3%252581%252584%2525E3%252581%252593%2525E3%252581%2525AA%2525E3%252581%25259B%2525E3%252582%25258B%2525E3%252581%252582%2525E3%252581%2525AA%2525E3%252581%25259F%2525E3%252581%2525AB%252520traverse%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Agakuzzzz%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzQyN2Q1ZDlmYzEuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)