, , , :
, , , ? , ,
, .
|@|, ApplicativeBuilder - DSL.
( ):
a scalaz.Functor , (ap)
| @|
" " OP , , ApplicativeBuilder.
|@| - , ApplicativeBuilder:
final def |@|[B](fb: F[B]) = new ApplicativeBuilder[F, A, B] {
val a: F[A] = self
val b: F[B] = fb
}
F - , Apply:
implicit val F: Apply[F]
Apply - Applicative point.
| @| ApplicativeBuilder, ( product + map - )
Option[Int] s:
import scalaz.Scalaz._
val o1 = 1.some
val o2 = 1.some
val result: ApplicativeBuilder[Option, Int, Int] = o1 |@| o2
val finalRes: Option[Int] = result.apply(_ + _)
|@| a Option[Int] ApplicativeBuilder[Option, Int, Int]. Option F, Apply.Apply. Int -> Int Option[Int], , , , .