11

私は2つの間の定義を読んで少し混乱しています。それらは実際に定義の観点から交差することができますか?または私は完全に失われていますか?ありがとう。

4

4 に答える 4

21

クロージャーという言葉がよく使われるように、単なる関数 (または必要に応じてコードのブロック) であり、データの一部のように扱い、他の関数などに渡すことができます (「クローズド」ビットは、最終的にそれを呼び出すと、最初に定義された場所で呼び出した場合と同じように動作します)。モナドは (大まかに) 関数を順次連鎖できるコンテキストに似ており、ある関数から次の関数にデータを渡す方法を制御します。

于 2009-04-26T12:33:23.167 に答える
5

モナドはロジックをキャプチャするためにクロージャを使用することがよくありますが、これらはまったく異なります。

個人的には、モナドについて心配する前に、クロージャ(基本的にはその環境、つまりローカル変数などもキャプチャするロジックの一部)の定義をしっかりと理解しようとします。彼らは後で来ることができます:)

Stack Overflowのクロージャーについては、さまざまな質問があります。作業しているプラ​​ットフォームによって異なります。たとえば、次のようなものがあります。

個人的には、モナドを「グロク」し始めたばかりです(私が手伝っている本のおかげで)。いつか私はそれらについての記事を書くことに取り掛かるでしょう、私がそれらを十分に理解していると感じたら:)

于 2009-04-26T12:04:06.280 に答える
1

「クロージャー」とは、1) 関数と、2) それが構築された自由変数の値で構成されるオブジェクトです。

「モナド」は、特定の方法で構成できる関数のクラスです。つまり、関連付けられたbindおよびreturn高階関数演算子を使用して、他の関数を生成します。

于 2009-06-03T03:42:49.230 に答える