Использование вопроса о выводе типа Scalaz. ListW. <^>

Я играл вокруг с ListW.<^>, определение которого следующие:

def <^>[B: Zero](f: NonEmptyList[A] => B): B = value match {
  case Nil => ∅
  case h :: t => f(Scalaz.nel(h, t))
}

Я не могу выяснить каким образом Option выбирается в качестве Zero введите для этого примера

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))

Таким образом, теперь у меня есть Список этих вещей. Моя цель состоит в том, чтобы возвратиться Option[CC] в течение минуты / макс. из posns где я получаю a 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] = $anon$1@1e48d65

scala> posns.filter(_.v < 0) <^> (_.min)
res0: Option[CC] = None

scala> posns.filter(_.v > 0) <^> (_.max)
res1: Option[CC] = Some(CC(5))

Опция была точно Zero введите я хотел! Может любой объяснять каким образом Option выбирается печатающим устройством? Я не объявляю это нигде!

6
задан oxbow_lakes 28 July 2010 в 10:42
поделиться