Полурешетка

Semilattice[A] - коммутативная и идемпотентная полугруппа.

Законы:

Код

trait Semilattice[A] extends Band[A] with CSemigroup[A]

Законы

Схема

classDiagram
    class Semigroup~A~{
        +combine(x: A, y: A) A
    }
    class CommutativeSemigroup~A~
    Semigroup <|-- CommutativeSemigroup
    class IdempotentSemigroup~A~
    Semigroup <|-- IdempotentSemigroup
    class Semilattice~A~
    CommutativeSemigroup <|-- Semilattice
    IdempotentSemigroup <|-- Semilattice 

Реализация в библиотеках

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

import cats.kernel.Semilattice
import cats.implicits.*

Semilattice.combine(Set(1, 2), Set(2, 3))
// Set(1, 2, 3)

Ссылки: