我想弄清楚“记忆”的功能是什么。一个例子是:
;; add : number -> (number -> number)
;; to create a function that adds x to its input
(define (add x)
(local ((define (x-adder y) (+ x y))) x-adder))当我使用例如(add 4)运行这个程序时,我只得到“函数:X-加法器”。我不明白这个函数的目的,也不明白它有什么好处。为什么上面的函数是带“内存”的函数,什么是“内存”的函数?
我们将带有“内存”的函数定义为与局部和高阶函数相结合的函数。但我不明白:
发布于 2017-11-19 00:49:29
假设您想要将30加到一个1位数字:
(+ 30 5)
; ==> 35你可以让它成为一个功能:
(define (add30 x)
(+ 30 x))但是,您可能有很多这样的函数,所以您创建了一个函数,它只需要第一件事就可以添加并返回一个函数,该函数接受第二个数字。那是你的add。您可以这样做add30:
(define add30 (add 30))现在假设您想要将30添加到整个列表中:
(define (digit-list->ascii-list lst)
(map (add 30) lst))那么什么是(add 30)好..。它返回一个x-adder,其中x绑定到30。map只提供了一个参数,它就变成了30+y,你可以说得到的函数记住了30,但技术术语是,变量30已经关闭。返回的函数是闭包。
https://stackoverflow.com/questions/47372042
复制相似问题