Работа с множествами как функциями
Из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»Может быть, это слишком абстрактно?