IsEmpty
PlusEmptyを継承した型クラスです。以下のような定義です。
trait IsEmpty[F[_]] extends PlusEmpty[F] { self =>
def isEmpty[A](fa: F[A]): Boolean
// その他のメソッド省略
}
日本語で説明すれば
「型引数がどんなものであろうとも、それに関係なく空かどうか?が必ず判断可能な型クラス」
といったところでしょうか。
この説明はPlusEmptyと比べた場合の話です。
PlusEmptyにはdef empty[A]: F[A]というメソッドがあります。
FがPlusEmptyのインスタンスでIsEmptyのインスタンスではない場合でも、Equal[F[A]]のインスタンスがあればemptyメソッドで生成したものと比較することによって「空かどうか?」は判断可能です。
逆に言うと
PlusEmptyのインスタンスだがIsEmptyのインスタンスではない場合は Equal[F[A]]のインスタンスがなければ 空かどうかは判断できません。
単にそれだけの型クラスで、あまり難しくはないと思います。自分が知る限り、他の型クラスがある言語でも、この型クラスはあまり見かけませんother-lang。
other-lang. 誰か他の言語での例があれば教えて下さい ↩