partial orderは数学的な観点から理解していますが、Scalaライブラリのタイプクラスはどこでどのように使用できますか。標準ライブラリ全体を検索したところ、使用方法は1つしかありません。Orderingによって拡張されました。その基本的な方法については同じ話tryCompare
、それはどこにも使われていないようです。ScalaライブラリのPartialOrderingの目的
object PartialFoo extends PartialOrdering[Foo] {
def tryCompare(a: Foo, b: Foo): Option[Foo] = {
if (a.x != b.x) None // Doesn't make sense to compare foos with different xs
else ???
}
}
UPD:代わりの
case class Foo(x: Int, y: String)
val order = Ordering.by { foo => (foo.x, foo.y) }
は、私はより多くのドメイン正しいインスタンスを実装する場合
だから、何のメリット私が持つことができるそれはまたリターンで特色definedを注文するように思えますSome[Int]
(Option[Int]
ではない)と入力しても、無効にすることはできません。それは意図的ですか?
標準ライブラリは、このような謎に満ちている、と私は思い「誰かがこれを何らかの点で含めることを首尾よく主張した」よりも良い答えがあるかどうかはわかりません。 –
また、Scalaのコードベースで使用されているのを覚えている唯一の場所は、Algebirdです。 –