我在Scheme
中遇到某些功能问题因此,在本书中,我了解了我遇到的问题,我还没有完全掌握这个问题。
它要我创建一个执行此操作的高阶函数:
(display ((incrementn 4) 2))
6
我已经被困在这几个小时,但似乎仍然没有理解基本面。所以我转向大家,希望我能更好地理解这个功能性的电话。
所以到目前为止我理解它的方式是当我们定义一个这样的函数时:
(define (increment n) ______)
空白空间显然代表我对给出的参数的以下操纵。我似乎无法理解的是高阶函数如何返回外部参数(增量函数)并将其注入定义的函数((增量3))
我完全理解3是我们增加n次的初始值(整数)(n是在((incrementn n)x)之外传递的参数,我们
我问你的问题是,假设x是一个未绑定的变量(对吗?),我如何返回该整数并多次将n递增1?这种行为的语法是什么?
答案 0 :(得分:0)
这里要理解的是,在我们使用incrementn
作为初始参数调用3
之后,它将返回函数,然后2
作为参数传递给该函数。这被称为currying,在您掌握了这里的概念后,解决方案很简单:
(define (incrementn n)
(lambda (x)
(+ n x)))
正如您所看到的,对incrementn
的调用会在返回的n
中捕获 lambda
参数的值,并在我们调用它时传递{ {1}},x
可用于n
正文中的表达式。现在,它按预期工作:
lambda