私は現在、仕事の後の空き時間にCourseraでScalaコースを受講しており、関数型プログラミングを最終的に試してみています. 私は現在、いくつかのオブジェクトを含む 2 つのセットの結合を「計算」することになっている割り当てに取り組んでいます。私がここで質問しようとしていることはそれほど重要ではないので、意図的に詳細を省略しています。ただし、関連するのは、セットがバイナリ ツリーとして定義され、各ノードに要素と 2 つのサブツリーが含まれていることです。
そうです。講義の例union
は次のとおりです。
def union(other:BTSet) :BTSet = ((left union right) union other) incl element
質問 1:率直に言って、関連する FAQ や他のフォーラム スレッドを読んだ後でも、この機能がどのように、なぜ機能するのかまだ理解できません。ここでは、ヘッド ノードに要素を追加 (呼び出し) する以外に、ユニオンの実装で行われる "アクション" はまったくありませんincl
。それ自体が何度も何度も呼び出されるだけです。どなたか解説いただけると助かります...
質問 2:コース フォーラムには、このソリューションはまったく効率的ではなく、十分ではないという多くの投稿が含まれています。そもそも仕組みがわからないので、なぜダメなのかよくわかりません。
割り当ての解決策についてネタバレを求めているわけではないことに注意してください。私は「成績のために仕事をする」ことをいとわないのですが、ここで何をすべきかがわかりません。このコースで提供される指示とガイダンスは、関数型プログラミングの癖に頭を悩ませるのに十分ではないと思います。したがって、正しいコーディング方法ではなく、正しく考える方法に対処するコメント/回答を歓迎します。