方案作业

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(使用前将#替换为@)

方案作业 的相关文章

  • 方案尾递归

    我正在尝试创建一个方案尾递归函数 flatten tl rec 来展平嵌套列表列表 define flatten tl rec lambda xs letrec flatten tl rec acc lambda xs acc cond e
  • 我们可以改进 SICP 的素数筛代码吗

    最近问答入口 https stackoverflow com questions 73689215 need help to understand some of the sicp streams examples展示了使用惰性流从 SIC
  • 在球拍中使用 stop-when

    我一直在搞这个程序 它需要一个数字并加 1 我想知道你到底如何使用stop when这里 例如 让它停在 5 点 我想这里需要一个 cond 声明 谢谢 require 2htdp image require 2htdp universe
  • DrRacket/Scheme 中的地图、过滤器、Foldr

    编程语言 Scheme DrRacket 我们目前正在回顾map filter and foldr在我的计算机科学课上 我知道这三个函数都可以用来创建抽象函数 但说实话 我对这三个函数之间的区别以及何时使用每个函数感到有点困惑 有人愿意解释
  • 这些嵌套向量是如何连接的?

    我编写了一段代码 它创建了一个向量 记分板 其中包含 3 个大小为 3 的独立向量 所有向量都包含符号 在所有索引 0 2 处 当我现在执行 向量集 时在记分牌的第一个向量上 要将其第一个元素更改为 X 向量 2 和 3 也会更改 这是如何
  • 方案相当于元组拆包是什么?

    在Python中 我可以做这样的事情 t 1 2 a b t a 将是 1 b 将是 2 假设我有一个列表 1 2 在方案中 有什么办法可以做类似的事情let 如果有什么区别的话 我会使用 Racket 在球拍中你可以使用match htt
  • 有类似 Haskell/ML 的 C 编译器吗?

    People have http jlongster com software iphone scheme iphone example 书面games http www artisancoder com 2009 10 scheme hi
  • 附加!在计划中?

    我目前正在学习 R5RS 方案 来自 PocketScheme 我发现我可以使用内置于方案的某些变体 但不是全部 中的函数 Append 换句话说 破坏性地改变列表 我对实际代码并不感兴趣 而是对答案感兴趣 而是对将列表作为函数 或向量或字
  • 将函数列表应用于数字

    据我了解 Scheme Racket 中的函数 如 map foldr 和 filter 可以做一些奇妙的事情 例如将函数应用于元素列表 是否可以将函数列表应用于单个元素 我想生成每个函数产生的值 然后找到它们的最大值 谢谢 对于第一部分
  • 在Scheme中编写一个自动记忆器。有关宏和包装器的帮助

    我在Scheme中编写自动记忆器时遇到了一些问题 我有一个有效的 memoize 函数 它创建一个哈希表并检查该值是否已经计算出来 如果之前已经计算过 则返回值 否则调用该函数 define memoizer fun let a table
  • 方案中的延续传递风格?

    我遇到了这段代码在维基百科上 http en wikipedia org wiki Continuation passing style define pyth x y k x x lambda x2 y y lambda y2 x2 y2
  • 删除重复项并对列表进行排序

    我正在尝试编写一个过程 该过程采用一个可能包含或不包含重复项的列表 然后按排序顺序返回没有重复项的列表 到目前为止我想到的是 define remove duplicated list if null list if car list ca
  • 按方案中的第一个元素对列表列表进行排序

    例如 我正在研究按第一个元素对列表列表进行排序 排序 列表 2 1 6 7 4 3 1 2 4 5 1 1 预期输出 gt 1 1 2 1 6 7 4 3 1 2 4 5 我使用的算法是冒泡排序 我修改了它来处理列表 但是 该代码无法编译
  • 将自然数转换为特定基数并将其作为列表返回

    我想将函数的结果显示为列表而不是数字 我的结果是 define lst list define num gt base n b if zero n append lst list 0 append lst list 10 num gt ba
  • 在Scheme中插入二叉树

    我想知道如何将列表中的元素插入二叉搜索树 我想知道为什么下面的代码不能按我的预期工作 输出是 4 1 5 13 6 我的下一个问题是对列表中的元素进行排序 但现在我只想插入它们 我的输出对于我所说的问题是否正确 我的代码如下 define
  • 传递给过程的列表转换为过程内列表的列表

    我正在 DrRacket 上调试这段代码 lang racket define last element on list lambda l cond null l null cdr l car l else last element on
  • 展开方案中的函数

    Goal 实施unfold仅使用两个参数的函数 论据 第一个参数是 f 它接受某种类型 I 的初始值并返回 nil 或两个元素的 cons 对 这两个元素中的第一个是某种类型 A 的列表中的下一个元素 下一个初始值又是某些类型 I 第二个参
  • 方案语言:合并两个数字

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

    我之前问过一个关于方案中数组的问题 结果它们被称为向量 但在其他方面基本上与您期望的相同 有没有一种简单的方法可以在 PLT 方案中处理多维 arrays 向量 出于我的目的 我想要一个名为make multid vector或者其他的东西
  • 在Racket中将结构递归转化为累积递归

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

随机推荐

  • 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