मैं चारों ओर ListW.<^>
साथ खेल रहा था, परिभाषा जिनमें से इस प्रकार है:Scalaz.ListW का उपयोग करके अनुमान प्रश्न टाइप करें। <^>
def <^>[B: Zero](f: NonEmptyList[A] => B): B = value match {
case Nil => ∅
case h :: t => f(Scalaz.nel(h, t))
}
मैं समझ नहीं कैसे आ Option
इस उदाहरण
scala> case class CC(v : Int)
defined class CC
scala> val posns = List(CC(2), CC(5), CC(1))
posns: List[CC] = List(CC(2), CC(5), CC(1))
तो के लिए Zero
प्रकार के रूप में चुना जा रहा है अब मेरे पास इन चीजों की एक सूची है। मेरा लक्ष्य Option[CC]
को posns
के न्यूनतम/अधिकतम के लिए वापस प्राप्त करना है, जहां शून्य के नीचे कोई मान नहीं है और अधिकतम के लिए समान नहीं है, तो मुझे न्यूनतम के लिए None
मिलता है।
scala> import scalaz._; import Scalaz._
import scalaz._
import Scalaz._
scala> implicit val CCOrder = new Order[CC] {
| def order(v1 : CC, v2 : CC) = orderBy((v : CC) => v.v).order(v1, v2)
| }
CCOrder: java.lang.Object with scalaz.Order[CC] = [email protected]
scala> posns.filter(_.v < 0) <^> (_.min)
res0: Option[CC] = None
scala> posns.filter(_.v > 0) <^> (_.max)
res1: Option[CC] = Some(CC(5))
विकल्प बिल्कुलZero
प्रकार मैं चाहता था! क्या कोई समझा सकता है कि Option
को टाइपर द्वारा कैसे चुना जा रहा है? मैं इसे घोषित नहीं करता!
शुरू में, आप 'एमए # min' के बजाय' एमए # max' की परिभाषा देते हैं। –
आह। तो मेरा अगला प्रश्न होगा - "' एमए 'क्यों' एमए 'से आ रहा है और' पहचान 'नहीं है? " –
@alexey: अपडेट किया गया। 'x.min (y)' 'पहचान ',' xs.min' मैचों' एमए 'से आता है। – retronym