Lisp SICP第3.4节中互斥的实现

Lisp SICP第3.4节中互斥的实现,lisp,scheme,mutex,sicp,Lisp,Scheme,Mutex,Sicp,当作者实现序列化程序的互斥部分时,他们使用一个名为cell的列表。但是这个列表只包含一个元素,为什么不使用一个变量呢 因为变量不是可以传递给另一个函数的一级值。在3.4中,作者实现了一个makemutex函数,该函数使用清除作为辅助函数,它接受一个单元格。如果单元格由可变变量表示,则clear必须在生成互斥锁中定义关闭该变量。测试和设置也是如此助手函数 例如,他们也可以使用一个框而不是cons单元格。如果在框中使用变量而不是列表,则过程将被清除和测试并设置不起作用,因为方案是按值传递的

当作者实现序列化程序的互斥部分时,他们使用一个名为
cell
的列表。但是这个列表只包含一个元素,为什么不使用一个变量呢

因为变量不是可以传递给另一个函数的一级值。在3.4中,作者实现了一个
makemutex
函数,该函数使用
清除作为辅助函数,它接受一个单元格。如果单元格由可变变量表示,则
clear必须在
生成互斥锁中定义
关闭该变量。
测试和设置也是如此助手函数


例如,他们也可以使用一个框而不是cons单元格。

如果在框中使用变量而不是列表,则过程将被清除
测试并设置不起作用,因为方案是按值传递的