Plus
Формальное определение
Универсальная количественная полугруппа.
Plus
должен удовлетворять законам полугруппы:
- Associativity (ассоциативность):
(x + y) + z = x + (y + z)
Определение в виде кода на Scala
trait Plus[F[_]]:
def plus[A](fa1: F[A], fa2: => F[A]): F[A]
def semigroup[A]: Semigroup[F[A]] = (f1: F[A], f2: F[A]) => plus(f1, f2)
Примеры
Связанный список
given Plus[List] with
def plus[A](fa1: List[A], fa2: => List[A]): List[A] = fa1 ++ fa2
Реализация
Реализация в ScalaZ
import scalaz.*
import Scalaz.*
List(1, 2) <+> List(3, 4) // List(1, 2, 3, 4)
Ссылки: