ApplicativePlus

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

ApplicativePlus - это моноидальный аппликативный функтор, Applicative комбинированный с PlusEmpty.

ApplicativePlus должен удовлетворять законам своих родителей.

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

trait ApplicativePlus[F[_]] extends Applicative[F], PlusEmpty[F]

Примеры

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

given ApplicativePlus[List] with
  override def unit[A](a: => A): List[A] = List(a)

  override def apply[A, B](fab: List[A => B])(fa: List[A]): List[B] =
    fab.flatMap { aToB => fa.map(aToB) }

  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.*

// ... Все операции родителей

Ссылки: