Quando gli autori implementano la parte mutex dei serializzatori, usano un elenco chiamato cell
. Ma la lista contiene solo un elemento, quindi perché non usare solo una variabile?L'attrezzo del mutex in SICP Sezione 3.4
5
A
risposta
10
Poiché una variabile non è un valore di prima classe che è possibile passare a un'altra funzione. In 3.4, gli autori implementano una funzione make-mutex
che utilizza clear!
come funzione di supporto, che accetta una cella. Se la cella fosse rappresentata da una variabile mutabile, sarebbe necessario definire clear!
all'interno di make-mutex!
per chiudere quella variabile. Lo stesso vale per la funzione helper test-and-set!
.
Avrebbero anche potuto usare, ad esempio, una casella invece di una cella di controllo.
5
Se al posto di un elenco viene utilizzata una variabile, le procedure clear!
e test-and-set!
non funzioneranno poiché Schema è un valore pass-by-value.