scalabook

Форк
0
/
plus-empty.md 
55 строк · 1.3 Кб

PlusEmpty

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

Универсальный количественный моноид.

PlusEmpty

должен удовлетворять законам моноида:

  • Associativity (ассоциативность): (x + y) + z = x + (y + z)
  • Identity (тождественность): существует e ∈ M
    такое, что e + x = x + e = x

Определение в виде кода на Scala

trait PlusEmpty[F[_]] extends Plus[F]:
self =>
def empty[A]: F[A]
def monoid[A]: Monoid[F[A]] =
new Monoid[F[A]]:
override def combine(f1: F[A], f2: F[A]): F[A] = plus(f1, f2)
override def empty: F[A] = self.empty[A]

Примеры

Связанный список

given PlusEmpty[List] with
def plus[A](fa1: List[A], fa2: => List[A]): List[A] = fa1 ++ fa2
def empty[A]: List[A] = List.empty[A]

Реализация

Реализация в ScalaZ

import scalaz.*
import Scalaz.*
// ... Все операции родителей
(PlusEmpty[List].empty: List[Int]) // List()

Ссылки:

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

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

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

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