Работа с множествами как функциями

ИзFP курс:

type Set = Int => Boolean  // Predicate

  /**
   * Indicates whether a set contains a given element.
   */
  def contains(s: Set, elem: Int): Boolean = s(elem)

Почему это имеет смысл?

assert(contains(x => true, 100))

В основном то, что он делает, это обеспечивает ценность100 к функцииx => true, Т.е. мы предоставляем 100, он возвращаетсяправда.

Но как это связано с множествами?

Что бы мы ни ставили, это возвращаетtrue, В чем смысл этого?

Я понимаю, что мы можем предоставить нашу собственную реализацию / функцию набора в качестве параметра, который представлял бы тот факт, что предоставленное значение находится внутри набора (или нет) - тогда (только) эта реализация делаетcontains Функция должна быть наполнена некоторым смыслом / смыслом / логикой / функциональностью.

Но пока это выглядит как бессмысленная функция. Это называетсяcontains но имя не представляет логику. Мы могли бы назвать этоapply() потому что он применяет функцию (1-й аргумент) к значению (2-й аргумент). Имея только имяcontains может сказать читателю, что автор может сказать. Isn»Может быть, это слишком абстрактно?

Ответы на вопрос(2)

Ваш ответ на вопрос