SICPセクション3.4のミューテックスの実装

著者がシリアライザのミューテックス部分を実装するときは、 cell というリストを使用します。しかしリストには1つの要素しか含まれていないので、なぜ変数を使用しないのですか?

5

2 答え

変数は別の関数に渡すことができるファーストクラスの値ではないためです。 3.4では、著者は clear!をセルをとるヘルパー関数として使用する make-mutex 関数を実装しています。セルが可変変数で表されていた場合、 clear!はその変数を閉じるために make-mutex!の中で定義されなければなりません。 test-and-set!ヘルパー関数の場合も同じです。

彼らはまた、コンスセルの代わりにボックスを使用することもできました。

10
追加された

リストの代わりに変数を使用すると、Schemeは値渡しであるため、 clear!および test-and-set!プロシージャは機能しません。

5
追加された