入れ子になった型を入れ替える(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))