4

アプリケーションファンクター (単一で失敗するだけでなく、複数の例外をキャッチするモナド) で検証を試みたときに、14 を超えるファンクターを禁止する scalaz のハードリミットに遭遇したので、ここからの有益なコメント ( https://github .com/scalaz/scalaz/issues/504#issuecomment-23626237 ) は、アプリケーション ファンクターの代わりに HList を使用するように案内してくれました

今では完全に正常に動作します (Maven https://github.com/typelevel/shapeless-contrib/blob/master/scalaz/main/scala/sequence.scalaにないため、ここからこのシーケンス ファイルを手動で配置する必要がありますか?ソース=c )

私の質問は、これが可能であることを知っています。case class Foo(i:Int,s:String)手動でパターンをケースと一致させることなく、パラメーターを再度適用するだけで、自動的にインスタンス化する方法を教えてください。

本質的に私はこのようなことをしたい

  case class Foo(i:Int,s:String)

  implicit def TwoFoo = Iso.hlist(Foo.apply _, Foo.unapply _)

  val someFoo = sequence(
      1.successNel[Int] ::
      "2".successNel[String] ::
      HNil
  ).map { Foo.apply _} // Note this doesn't work

  someFoo match {
    case Success(a) => println(a)
    case Failure(a) => {
      println("failure")
      println(a)
    }
  }
4

1 に答える 1