作者:mobiledu2502856973 | 来源:互联网 | 2022-12-30 12:39
任何人都可以向我解释这个Scheme中的表达式如何返回100?
(((lambda (f) ((lambda (g) (lambda (h) (f (g (h 4))))) double)) square) inc)
我知道它以某种方式分解为"(2*(4 + 1))^ 2",但对于我的生活,我无法弄清楚如何.
这是针对类似问题的考试.其中大约有6或7个,我们必须在大约1或2分钟内找到答案(因为它们只是测试的一部分).除了努力学习之外,我们的教授没有提供任何帮助,但我完全不知道如何做到这些,更不用说快速了.
任何帮助将不胜感激!谢谢.
1> Óscar López..:
让我们一步一步 - 注意一个好的缩进如何让一切变得更容易理解!
(((lambda (f) ; call outermost lambda, f is bound to square
((lambda (g) ; call mid lambda, g is bound to double
(lambda (h) ; return lambda, h is unbound
(f (g (h 4)))))
double))
square)
inc)
上面的表达式已经简化为:
((lambda (h)
(square (double (h 4))))
inc)
现在我们最后调用last lambda
,并且h
绑定inc
,导致以下表达式:
(square (double (inc 4)))
=> 100