Predecessible и Successible

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

Predecessible — это класс типов для представления множеств, которые можно считать в обратном порядке, т.е. у каждого элемента есть предыдущий элемент, меньший его.

Successible — это класс типов для представления множеств, которые увеличиваются, т.е. у каждого элемента есть следующий элемент, больший его.

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

trait Predecessible[A]:
  def prev(a: A): A

trait Successible[A]:
  def next(a: A): A

trait Bothable[A] extends Predecessible[A], Successible[A]

Примеры

Числа

given Bothable[Int] with
  override def prev(a: Int): Int = a - 1
  override def next(a: Int): Int = a + 1

Ссылки: