मैं Scalaz में Traverse
विशेषता में निम्नलिखित समारोह परिभाषा को समझने के लिए संघर्ष कर रहा हूँ:स्कालाज़ `एफ [_]: आवेदक प्रकार की बाधा कैसे अंतर्निहित मानकों का उपयोग करती है?
def traverse[F[_] : Applicative, A, B](f: A => F[B], t: T[A]): F[T[B]]
हिस्सा मुझे समझ नहीं आता F[_] : Applicative
है। , traverse
कुछ प्रकार F
के लिए काम करने के लिए, एक दायरे में प्रकार Applicative[F]
का एक अंतर्निहित वस्तु लाने के लिए की जरूरत है
trait Applicative[Z[_]] extends Pointed[Z] with Apply[Z] {
override def fmap[A, B](fa: Z[A], f: A => B): Z[B] = this(pure(f), fa)
override def apply[A, B](f: Z[A => B], a: Z[A]): Z[B] = liftA2(f, a, (_:A => B)(_: A))
def liftA2[A, B, C](a: Z[A], b: Z[B], f: (A, B) => C): Z[C] = apply(fmap(a, f.curried), b)
}
यहाँ:
अब, चलो देखते हैं कि क्या Applicative
है करते हैं।
मैं कई बातें समझने के लिए करना चाहते हैं:
- वाट बिल्कुल
F[_] : Applicative
मतलब है? F[_]
Applicative
के साथ कुछ करने के लिए क्यों है? हमेंApplicative[F]
की आवश्यकता है, एफ [कुछ] लागू नहीं है?- यह विधि अंतर्निहित पैरामीटर घोषित किए बिना
Applicative[F]
के अंतर्निहित मूल्यों का उपयोग क्यों करती है?
आह, तो यह ** ** एक विशेष भाषा सुविधा है! धन्यवाद! – Rotsor