Я использую функциональное программирование Coursera в классе Scala. Это вторая неделя, и я ударил стену. В задании мы работаем с Sets, но не с тем набором, который мы все встречаем в Java, например. Это Set, который возвращает true, если значение там, и false в противном случае. Они говорят, что это не контейнер, это просто функция.
Чтобы понять это, мне нужна ваша помощь. Я не хочу, чтобы вы решали мое задание, это просто пример того, что я хочу получить представление о том, что я должен делать.
/**
* We represent a set by its characteristic function, i.e.
* its `contains` predicate.
*/
type Set = Int => Boolean
/**
* Indicates whether a set contains a given element.
*/
def contains(s: Set, elem: Int): Boolean = s(elem)
/**
* Returns the set of the one given element.
*/
def singletonSet(elem: Int): Set = Set(elem)
/**
* Returns the union of the two given sets,
* the sets of all elements that are in either `s` or `t`.
*/
def union(s: Set, t: Set): Set = ???
Это код. В singletonSet
я предполагаю, что способ решить это - вернуть Set(elem)
, правильно?
Если это хорошо, как я должен сделать союз между ними? Я не новичок в программировании, но я не вижу никакого способа сделать это. Так как я не должен возвращать "набор" чисел.
Вот что сказал мне еще один студент: "Но все" Set "- это функция, которая принимает Int и возвращает логическое значение (Int = > Boolean). Любая функция, которая принимает Int и возвращает логические подстановки тип" Установить".
То, что я пробовал в функции union, должно иметь что-то вроде:
def union(s: Set, t: Set): Set = (s | t) //value | not a member of Int => Boolean
Любая помощь будет оценена:)