私は Scala クラスで Coursera 関数型プログラミングを取っています。2週目で壁にぶち当たりました。この課題ではセットを扱っていますが、たとえば Java で遭遇する種類のセットではありません。値がそこにある場合は true を返し、そうでない場合は false を返す Set です。彼らは、それはコンテナではなく、ただの機能だと言います。
明確にするために、あなたの助けが必要です。私はあなたに私の課題を解決してほしくありません。これは、私が何をすべきかを理解してもらいたいという単なる例です。
/**
* 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)
?
それでよろしければ、どうすれば両者を結びつけることができますか? 私はプログラミングが初めてではありませんが、それを行う方法がわかりません。数値の「セット」を返すべきではないためです。
これは、別の学生がセットについて私に言ったことです: "しかし、すべての「セット」は、Int を取り、ブール値を返す関数です (Int => Boolean)。Int を取り、ブール値を返す関数は、その型に適合します 'セット」。
ユニオン関数で試したのは、次のようなものです。
def union(s: Set, t: Set): Set = (s | t) //value | not a member of Int => Boolean
どんな助けでも大歓迎です:)