scalabook

Форк
0
51 строка · 1.6 Кб

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

Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.