私は遊んでいましたが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
を取得することです。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
タイパーがどうやって選ばれたのか、誰か説明できますか?私はそれをどこにも宣言しません!