IsEmpty

Формальное определение

IsEmpty - класс типов, позволяющий проверить, действительно ли какой-либо тип с пустым представлением является пустым. Расширяет PlusEmpty.

IsEmpty должен удовлетворять следующим законам (помимо законов родителей):

Определение в виде кода на 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

Ссылки: