Plus

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

Универсальная количественная полугруппа.

Plus должен удовлетворять законам полугруппы:

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

Ссылки: