Takuya71 のぶろぐ

外資系ソフトウェア会社で働いてます、認定スクラムマスター

入れ子になった型を入れ替える(Scalaz)

M[N[_] というようなデータ構造のデータがあって MとNを入れ替える場合 traverse(identity) を使うと簡単に出来る。

scala> Option(List(1,2,3)).traverse(identity)
res6: List[Option[Int]] = List(Some(1), Some(2), Some(3))

scala> List(1.some, 2.some, 3.some).traverse(identity)
res8: Option[List[Int]] = Some(List(1, 2, 3))