方案作业

2024-03-12

当我每次得到值 10 时评估以下表达式。

(((lambda (x) (lambda () (set! x (+ x 10)) x)) 0)) 

不过,我只是通过用名称抽象上述过程来进行修改,并在每次值增加 10 时调用 foo!

(define foo ((lambda (x) (lambda () (set! x (+ x 10)) x)) 0))

有人可以解释一下吗?


您所调用的函数是一个计数器,每次调用时都会返回比原来大 10 的数字。

在第一种情况下,每次都会创建一个新函数,然后立即调用它一次,然后丢弃该函数。因此,每次您都是第一次调用该计数器的新实例,因此它应该返回 10。

在第二种情况下,您创建一次函数并将其分配给一个变量并重复调用同一函数。由于您正在调用相同的函数,因此它应该返回 10, 20, ...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

方案作业 的相关文章

  • 学习一种 Lisp 有助于学习另一种 Lisp 吗?

    学习不同的 Lisp 语言之间有协同作用吗 我目前正在学习 Emacs Lisp 因为它在我的日常 Emacs 使用中立即有用 但是我对所有 Lisp 都很着迷 所以也许有一天我会学习和使用其他语言 当我开始深入研究 Common Lisp
  • 如何创建像球拍一样的 make-curry 函数

    我想看看如何模仿 curry func that racket提供 下面是我如何手动柯里化函数的示例 lang sicp convert to a curried function define add1 x y x y define ad
  • 方案相当于元组拆包是什么?

    在Python中 我可以做这样的事情 t 1 2 a b t a 将是 1 b 将是 2 假设我有一个列表 1 2 在方案中 有什么办法可以做类似的事情let 如果有什么区别的话 我会使用 Racket 在球拍中你可以使用match htt
  • schema 中的方法和属性:Scheme 中是否可以实现 OOP?

    我将用一个简单的例子来说明我的问题 在 Java C 或任何其他 OOP 语言中 我可以创建一个pie类的方式类似于 class Apple public String flavor public int pieces private in
  • 方案let语句

    在函数式编程语言scheme中 没有赋值语句 但在一个let陈述 let x 2 x 3 您正在分配2 to x 那么为什么这不违反函数式编程中没有赋值语句的原则呢 Scheme 是一种函数式编程语言 这一说法是不正确的 在Scheme中
  • Scheme/Racket有枚举操作吗?

    Scheme Racket 是否有相当于 Haskell 中的 a b 表示法的枚举表示法 在 Haskell 中 1 5 计算结果为列表 1 2 3 4 5 for list i in range 1 6 i sequence gt li
  • 方案中的延续传递风格?

    我遇到了这段代码在维基百科上 http en wikipedia org wiki Continuation passing style define pyth x y k x x lambda x2 y y lambda y2 x2 y2
  • 方案/球拍:画布操作

    1 正如标题所述 当我调整窗口大小时 我绘制的对象消失 但矩形保持原样 2 原点从左上角开始 但我希望它在左下角 3 除了绘图库之外 我找不到任何缩放功能 所以如果我希望实现这样的功能 一个选项是通过绘制更大的对象并刷新画布来 缩放 def
  • CMake:如何在多个文件上运行自定义命令来生成源文件?

    我有以下情况 我想编译一些Scheme文件Gambit https github com gambit gambit成可执行文件 为此 我使用 gambit 将所有计划文件翻译 生成为 C 和目标文件 然后将其编译并链接为可执行文件 假设我
  • Racket 中的“match”可以具有带有来自外部作用域的变量的模式吗?

    考虑以下示例 lang racket match cat doge a b match b a t f Not a pair 如果我想匹配头部和尾部相同的对 我可能会这样写 但这不起作用 因为第二个a被绑定为一个新变量 并且匹配任何内容 是
  • 方案语言:合并两个数字

    如何将列表中的两个整数合并为一个 方案中 例子 11 223 gt 11223 假设列表恰好有两个元素 并且都是数字 define merge numbers lst let 1st number gt string first lst 2
  • 方案中的尾递归幂函数

    我在方案中编写尾递归幂函数时遇到问题 我想使用辅助函数来编写该函数 我知道我需要一个参数来保存累计值 但在那之后我就陷入了困境 我的代码如下 define pow tr a b define pow tr h result if b 0 r
  • 方案字符串追加?递归复制字符串

    设计一个名为 string dup 的程序 它使用一个字符串 s 和一个数字 n 并返回一个由 s n 次连接而成的字符串 每个 s 实例之间有空格 即 string dup a 3 gt a a a 不使用复制 但我想我们可以使用字符串追
  • 在Racket中将结构递归转化为累积递归

    我有一些代码来查找最大高度并将其替换为关联的名称 身高和姓名有单独的列表 每个列表的长度相同且非空 我可以使用结构递归来解决这个问题 但必须将其更改为累积递归 而且我不确定如何做到这一点 我见过的所有例子都让我困惑 有人能够将代码变成使用累
  • 我在函数的最后一次递归调用中得到“方案应用程序而不是过程”

    所以这是代码 define time prime test n newline display n start prime test n runtime define start prime test n start time if pri
  • 为什么《小阴谋家》中的所有 lambda 表达式都是如此?

    在从 SICP 学习了一些计划之后 我开始阅读 小计划 我觉得这本书很有趣 并且已经完成了大约四分之一 我注意到我可以在不使用 lambda 的情况下编写许多 大多数 全部 解决方案 而 The Little Scheduleralways
  • 返回列表的前 n 个

    如何返回第一个n列表的元素 这是我所拥有的 define returns lambda list n cond null list 0 n n 1 car list cons car list returns cdr list n else
  • Scheme (Lisp) 中树的深度反转

    我对Scheme中的基本树数据结构进行了深度逆向 define deep reverse t cond null t not pair t t else cons deep reverse cdr t deep reverse car t
  • 如何在mit-scheme中正确使用(读取)?

    我在文档和 Rosetta 代码中读到 read 用于从控制台获取输入 所以我写了这段代码来检查这一点 display read 1 但 mit scheme 从不要求用户输入 程序就会终止 为什么会这样呢 在 REPL 中 display
  • 将数字转换为英文字母列表

    我有下面的函数 它将数字输入转换为这些数字的部分翻译的单词输出 使用乘积和商 它将数字的单词表示相加 同时将数字分组 例如 number name 87969087 gt 87 million 969 thousand 87 number

随机推荐

  • Jest 遇到意外标记:SyntaxError: Unexpected Token {

    Issue 当我在另一台机器上运行代码时遇到此错误时 我正在使用 Jest 和 Enzyme 运行测试 当我跑步时npm test只运行jest coverage verbose每次都会出现这个错误 但是 当我在工作笔记本电脑上运行它时 这
  • 将 Git 存储库保留在 Eclipse 工作区内部还是外部更好?

    我是一名典型的 Eclipse Subversion 用户 开始迁移到 Git 我研究了 git 的基本概念 并决定一开始坚持每个存储库一个项目的方法 以保持事情简单 不过 我仍然无法决定将每个项目的存储库放置在哪里 我花了很多时间查看答案
  • Swagger C# 枚举生成 - 底层 int 值与原始枚举不匹配

    我在服务器上创建了一个枚举 其中手动设置了整数值 而不是从 0 开始默认增量 public enum UserType Anonymous 0 Customer 10 Technician 21 Manager 25 Primary 30
  • Autofac 与 Owin

    我有一个问题Autofac 该文档明确指出 当使用 Web API 2 和 OWIN 时 您must not use GlobalConfiguration Configuration任何地方 OWIN 集成中的一个常见错误是使用 Glob
  • Hive 将字符串转换为字符数组

    例如 如何将字符串转换为字符数组 abcd gt a b c d 我知道分割方法 SELECT split abcd a b c d 最后一个空格有错误吗 或任何其他想法 这实际上不是一个错误 蜂巢分割功能 https github com
  • TortoiseSVN 清理实际上做了什么?

    TortoiseSVN 清理实际上做了什么 我还没有找到模式 但我经常被要求在尝试提交代码时进行 清理 如果 TortoiseSVN 知道它什么时候变脏 为什么它不自己运行清理呢 Edit 我认为它不是自动的 因为它需要中止操作并解锁 pa
  • 使用 XmlCompiledTransform 合并两个 XPathDocument

    我不可能是第一个这样做的人 使用 XSLT 合并两个文档似乎是一种常见的做法 但是 我似乎无法在互联网上找到任何示例 我有两个 XML 文档 它们作为 XML 字符串从 SQL Server 中检索 我想用XslCompiledTransf
  • 为什么图像要旋转并调整大小而不是仅调整大小?

    我想调整图像大小而不旋转图像 这是我的代码 Image temp image getScaledInstance width height ImageScale SCALE SMOOTH BufferedImage resized new
  • 如何增加 kubernetes 工作节点中临时存储的大小

    我们使用 kubeadm 部署集群 1 个主节点 4 个工作节点 kubectl describe node worker1 Name worker1 Roles
  • Objective-C 块和变量

    我今天开始使用 Objective C 块 我写了以下代码 NSArray array 25 abc 7 2 void print NSUInteger index NSUInteger index NSLog array index fo
  • 如何在 pandas 数据框中使用 ast.literal_eval 并处理异常

    我有一个dataframe有一列包含tuple数据作为字符串 例如 5 6 我需要将其转换为元组结构 一种方法是使用 ast literal eval 我就是这样使用的 df Column df Column apply ast liter
  • 修改并添加netcdf属性

    我有一个带有以下内容的 netCDF 文件 有关维度之一的信息 int time time 100 units calendar year as Y ChunkSizes 1048576 int 有没有可用的工具 例如nco 可以像这样修改
  • 无法将 APK 上传到 Google Play

    无法将 APK 上传到 Google Play 已经尝试过其他浏览器和电脑 无论如何都无法上传 总是得到 将新 APK 上传到生产环境 上传失败 我们无法保存您的更改 请再试一次 上传另一个APK 似乎是谷歌部分的东西 快速搜索发现现在很多
  • 遍历设置文件

    我目前正在开发一个 VSTO 项目 我有 5 个项目 settings文件 Settings settings 默认 s201213 settings s201314 settings s201415 settings s201516 se
  • 将字符串 RDD 转换为 Int RDD

    我是 scala 新手 我想知道在 Spark 中使用 scala 处理大型数据集时是否可以读取为 int RDD 而不是 String RDD 我尝试了以下方法 val intArr sc textFile Downloads data
  • PHP - 设置 cookie 和重定向

    我正在尝试设置 cookie 并重定向 使用 Debian GNU Linux 6 0 64 位 和 PHP 5 3 3 7 squeeze19 以及 Suhosin Patch cli 构建时间 2014 年 2 月 17 日 10 10
  • 无法解析的父 POM 无法找到工件,并且“parent.relativePath”指向错误的本地 POM

    我是 Maven 新手 我有一个项目 我尝试使用 maven3 构建 当我运行命令时mvn X clean install我收到错误了 root localhost mvn X clean install Apache Maven 3 0
  • 如何从子查询结果中选择值

    我有下面提到的 4 个表并尝试提取值ACC NUMBER来自子查询 请帮助我优化正确的语法 ACCOUNT TABLE ACC NUMBER ACC NAME ACCOUNT DETAILS TABLE ACC NUMBER DEAL NU
  • Android Studio 2.0 更新 - public static volatile com.android.tools.fd.runtime.IncrementalChange

    在我使用 Android 2 0 更新后 一个新字段已添加到我的模型对象中 public static volatile com android tools fd runtime IncrementalChange com pr4 mode
  • 方案作业

    当我每次得到值 10 时评估以下表达式 lambda x lambda set x x 10 x 0 不过 我只是通过用名称抽象上述过程来进行修改 并在每次值增加 10 时调用 foo define foo lambda x lambda