首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“记忆”功能?

什么是“记忆”功能?
EN

Stack Overflow用户
提问于 2017-11-18 23:08:33
回答 1查看 145关注 0票数 1

我想弄清楚“记忆”的功能是什么。一个例子是:

代码语言:javascript
复制
;; 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-加法器”。我不明白这个函数的目的,也不明白它有什么好处。为什么上面的函数是带“内存”的函数,什么是“内存”的函数?

我们将带有“内存”的函数定义为与局部和高阶函数相结合的函数。但我不明白:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-19 00:49:29

假设您想要将30加到一个1位数字:

代码语言:javascript
复制
(+ 30 5)
; ==> 35

你可以让它成为一个功能:

代码语言:javascript
复制
(define (add30 x)
  (+ 30 x))

但是,您可能有很多这样的函数,所以您创建了一个函数,它只需要第一件事就可以添加并返回一个函数,该函数接受第二个数字。那是你的add。您可以这样做add30

代码语言:javascript
复制
(define add30 (add 30))

现在假设您想要将30添加到整个列表中:

代码语言:javascript
复制
(define (digit-list->ascii-list lst)
  (map (add 30) lst))

那么什么是(add 30)好..。它返回一个x-adder,其中x绑定到30map只提供了一个参数,它就变成了30+y,你可以说得到的函数记住了30,但技术术语是,变量30已经关闭。返回的函数是闭包。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47372042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档