- 论坛徽章:
- 0
|
>>起初是发现做练习3.51,3.52时和答案不同,开始怀疑自己的延迟求值是否能真正的延时
>>然后试着构造了一下无限流,发现陷入无穷递归了.
>>然后自己测试了一下delay(按书上的代码),发现delay的时候会对表达式求值,而delay调用的是memo-proc(按书上的代码)
>>然后测试memo-proc时发现它也会对表达式直接求值,而非返回一个待求值的lambda表达式.
memo-proc 是函数,scheme 对参数求值是严格的,所以会对传给它的表达式求值。
>>故猜测PLT Scheme在遇到无参过程时会进行自动的求值.但无法验证.
>>我在R5RS和Module模式中均遇到了这样的问题.
看不懂你说的。表达式不会被自动求值,除非你主动去求值它。
>>请求各位高人解答.
>>又想了一下,突然发现我的delay和memo-proc根本没有办法做到把表达式保存起来这个功能...应该怎么实现呢?
>>Sorry,往前狂翻若干页找到了惰性求值的那个...虽然我还不懂Scheme的宏,但是就先拿来用吧...
>>可是怎么在宏中把memo-proc给加上呢?
memo-proc 不是宏,是函数。它返回一个带状态的函数,此函数一旦被求值一次,就会记住已经被求值过,已经求值的结果。 |
|