scalabook

Форк
0
57 строк · 1.7 Кб

Группа моноидов

Схема

monoid

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

Моноиды обычно используются для сворачивания последовательностей. Например, вот как можно посчитать произведение чисел:

trait Semigroup[A]:
def combine(x: A, y: A): A
trait Monoid[A] extends Semigroup[A]:
def empty: A
given Monoid[Int] with
val empty = 1
def combine(x: Int, y: Int): Int = x * y
def fold[A](xs: List[A])(using m: Monoid[A]): A =
xs.foldLeft(m.empty)(m.combine)
fold(List(1, 2, 3, 4, 5))
// val res0: Int = 120

Более подробно применение моноидов рассматривается в книге Scala with Cats.

Обычно библиотеки определяют "свой" оператор для моноидальной операции combine

, например:

trait Semigroup[A]:
def combine(x: A, y: A): A
extension (x: A)
def |+|(y: A) = combine(x, y)
...
3 |+| 4
// val res1: Int = 12

Ссылки:

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

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

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

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