IsEmpty
Формальное определение
IsEmpty
- класс типов, позволяющий проверить, действительно ли какой-либо тип с пустым представлением является пустым.
Расширяет PlusEmpty
.
IsEmpty
должен удовлетворять следующим законам (помимо законов родителей):
isEmpty
с параметромempty
должен возвращатьtrue
:isEmpty(empty[A]) == true
.isEmpty
от композиции двух функторов равноtrue
тогда и только тогда, когдаisEmpty
от каждого функтора -true
:isEmpty(f1) && isEmpty(f2) == isEmpty(plus(f1, f2))
Определение в виде кода на Scala
trait IsEmpty[F[_]] extends PlusEmpty[F]:
def isEmpty[A](fa: F[A]): Boolean
Примеры
Связанный список
given IsEmpty[List] with
override def isEmpty[A](fa: List[A]): Boolean = fa.isEmpty
override def plus[A](fa1: List[A], fa2: => List[A]): List[A] = fa1 ++ fa2
override def empty[A]: List[A] = List.empty[A]
Реализация
Реализация в ScalaZ
import scalaz.*
import Scalaz.*
// ... Все операции родителей
summon[IsEmpty[List]].isEmpty(List.empty[Int]) // true
Ссылки: