4

コンテクスト

Clojureエージェントには新しい値は送信されません。古い値に適用される関数が送信されます。プログラミングの初期の頃、私はこのカウンターが直感的であることに気づき、次の形式のコードを書くことがよくありました。

(send some-atom (fn [old] new_value))

その後、徐々に、新しい値ではなく更新関数を送信することがいかに素晴らしいかを実感しました。

質問:

このアイデアは元々どこから来たのですか?(新しい値の代わりに)update-functionを送信するのは何ですか?このアイデアは、並行性を処理する別の方法のためのより一般的な一連の手法の一部ですか?

ありがとう!

4

1 に答える 1

2

リッチヒッキーは、これをこのビデオの機能的な時間モデルのようなものと呼んでいます。言い換えると、従来のオブジェクト指向言語では、IDは、オブジェクトをロックし、オブジェクトを編集して、常に常にその状態にあるようにすることで、時間1の状態から時間2の状態に移行するオブジェクトです。 2、それからそれのロックを解除します。州間で誰も見ないようにロックする必要があります。そのビデオの野球の試合の例では、これはスタジアムの全員がボールを動かすたびに目を閉じて心をクリアにすることに似ています。元のビデオを見るのは時間の価値があります。

原則は「未来は過去の機能である」ということです

アイデンティティは一連の状態であり、関数はこれらの状態間の遷移を定義します

ああ、元の質問に答えるために、リッチはそのアイデアをアルフレッド・ノース・ホワイトヘッドの功績だと考えています

于 2012-06-15T21:33:45.520 に答える