scheme - 这个 Scheme 解释器输出的含义是什么?
问题描述
我正在通过简单的方案工作。我正在使用 DrRacket 作为我的定义文件
https://gist.github.com/alexgian/5b351f367169b40a4ad809f0bb718e1f
我在练习 17.3,上面写着
https://people.eecs.berkeley.edu/~bh/ssch17/lists.html
描述此 map 调用返回的值
> (map (lambda (x) (lambda (y) (+ x y))) '(1 2 3 4))
在 DrRacket 中,我得到了 map 调用的以下输出:
(#<procedure> #<procedure> #<procedure> #<procedure>)
我知道 lambda 可以让您返回过程。我很难弄清楚由于某种原因正在返回什么程序,这里到底发生了什么。
解决方案
只需将列表的每个值依次替换为内部函数中的变量 x 即可。换句话说,结果等于:
(list (lambda (y) (+ 1 y))
(lambda (y) (+ 2 y))
(lambda (y) (+ 3 y))
(lambda (y) (+ 4 y)))
四个函数的列表,每个函数将其参数增加一个不同的值。
推荐阅读
- android-studio - 生成签名的 apk 给我 AAPT2 错误
- docker - 如何按平台过滤 Docker 镜像?
- html - Html 不读取字体
- acumatica - 如何检索过滤后的记录
- aws-lambda - 无法使用雪花连接器运行 AWS Lambda
- node.js - IBM Cloud Functions / OpenWhisk Slack 包和消息附件
- javascript - 与第二个数组中的对象属性值相比,返回过滤后的数组
- azure-data-factory-2 - Azure Data Factory V2 可以将每 20 秒更新一次的文件从本地复制到 Azure Data Lake 吗?
- html - 如何使未选中的复选框具有粘性
- mysql - 是否可以对 GIT 之类的数据库进行版本控制?