昨夜、この質問に答えて、次のことに気付きました。
scala> val foo: Option[Set[Int]] = Some(Set(1, 2, 3))
foo: Option[Set[Int]] = Some(Set(1, 2, 3))
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._
scala> foo.sequenceU
res0: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
つまり、foo
が整数のオプションのセットである場合、それを順序付けすると整数のセットが返されます。
シーケンス aは aF[G[A]]
を返すはずなので、これは最初は期待していませんでした(それがトラバース可能で、アプリケーション ファンクターであるG[F[A]]
と仮定します)。ただし、この場合、レイヤーは消えるだけです。F
G
Option
これはおそらく、 のスーパータイプの 1 つと機能する機械Set
との間の何らかの相互作用と関係があることを知っています。数分の時間を見つけることができたら、タイプを調べて、何が起こっているかの説明を書き上げる予定です。 .Unapply
sequenceU
しかし、それは潜在的に興味深い小さなパズルのように思えます。誰かが私を打ち負かして答えを得ることができる場合に備えて、ここに投稿すると思いました.