Let 和 Let* 的方案混淆

2023-12-26

(let ((x 2) (y 3)
  (let ((x 7)
        (z (+ x y)))
    (* z x)))

对于上面的代码,为什么答案是 35,而不是 70?在第二let,x 是 7,所以 z 应该是 7 + 3 = 10,然后结果应该是 7 * 10 = 70。我知道还有另一个是 let* 我在这 2 之间感到非常困惑。示例是从 google 获取的。我已经谷歌但无法得到它。


扩展莱皮的答案:如果你写了

(let ((x 2) (y 3))
    (let* ((x 7)
           (z (+ x y)))
       (* z x)))

你会得到你所期望的答案。内置的let*完全等于

(let ((x 7))
    (let ((z (+ x y)))
       (* z x)))

事实上,在某些计划中可能会以这种方式实施。

换句话说,在一个let*形成第一个绑定之后的每个连续绑定,该绑定位于所有先前创建的绑定的范围内。

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

Let 和 Let* 的方案混淆 的相关文章

  • 如何判断列表中是否有第三项?

    我有一个函数 它接受一个包含两个或三个元素的列表 expecting either a b c d or a b c d e define has third item ls if null caddr ls false true 但是这段
  • 方案尾递归

    我正在尝试创建一个方案尾递归函数 flatten tl rec 来展平嵌套列表列表 define flatten tl rec lambda xs letrec flatten tl rec acc lambda xs acc cond e
  • 在球拍中使用 stop-when

    我一直在搞这个程序 它需要一个数字并加 1 我想知道你到底如何使用stop when这里 例如 让它停在 5 点 我想这里需要一个 cond 声明 谢谢 require 2htdp image require 2htdp universe
  • 如何清除 Dr. Racket IDE 中的解释器屏幕?

    刚刚开始接触 The Little Schemer 有一个非常基本的 Dr Racket IDE 问题 如何清除口译员屏幕 如何设置向上箭头来显示之前输入的项目 如 Bash 中 而不是当前向上滚动屏幕的行为 我的搜索结果一片空白 可能是因
  • 如何在Racket中使用TCP?

    我试图从客户端向服务器发送消息 并在服务器上打印该消息 服务器 rkt lang racket define the listener tcp listen 9876 define values in out tcp accept the
  • 学习一种 Lisp 有助于学习另一种 Lisp 吗?

    学习不同的 Lisp 语言之间有协同作用吗 我目前正在学习 Emacs Lisp 因为它在我的日常 Emacs 使用中立即有用 但是我对所有 Lisp 都很着迷 所以也许有一天我会学习和使用其他语言 当我开始深入研究 Common Lisp
  • 对于方案中的每个和地图

    这两个功能在方案上有什么区别吗 我正在使用 Dr Racket R5RS 语言制作一个模拟器游戏 我无法决定哪个更好 for each从左到右计算列表元素上的给定函数 并丢弃函数的返回值 它非常适合对列表中的每个元素进行副作用操作 map以
  • 方案中的参数传递

    谁能帮我理解Scheme中的各种参数传递模式 我知道Scheme实现了按值传递参数 但其他模式又如何呢 有没有关于Scheme中参数传递的好的文档 方案有only按值调用函数调用 还有其他可以在该语言中实现的替代方案 但如果您是初学者 那么
  • 有类似 Haskell/ML 的 C 编译器吗?

    People have http jlongster com software iphone scheme iphone example 书面games http www artisancoder com 2009 10 scheme hi
  • 在Scheme中let和let*有什么区别?

    我正在为 GIMP 编写脚本并使用let 就像我采集的样本一样 但它似乎只是一种 lambda 糖 就像let 为什么它们不同 它们之间有什么区别 它们在变量绑定的顺序上有所不同 例如考虑这个 gt let a 1 b a 2 b 此代码将
  • 附加!在计划中?

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

    我们的编程语言练习考试中给出了以下问题 我很难理解它是如何工作的 有人能告诉我代码流程是什么吗 我已经在球拍中运行过它并且知道答案是什么 看起来第一个 lambda 函数将其他两个函数作为参数 但输入在哪里 lambda x 2 and l
  • 方案单词列表 eq?

    我有一个问题 我需要查找列表是否等于第二个列表 例如 set eq 1 2 3 1 2 3 gt t set eq 1 2 3 2 3 4 gt f 这些例子在我的程序中是正确的 但这个例子不是 set eq quote quote one
  • 小阴谋家 - 从哪里开始?

    我刚刚打开 小阴谋家 我觉得我错过了一些东西 第一个问题问 这是一个原子吗 但我没有看到原子是什么的任何定义 我想我可以通过问题的答案推导出什么是原子 但随后它继续问 l 的 car 是什么 l 的 cdr 是什么 我不知道在问什么 这本书
  • 方案按引用传递

    如何在方案中通过引用传递变量 我想要的功能的示例 define foo lambda x set x 5 define y 2 foo y display y outputs 5 另外 有没有办法通过引用返回 See http commun
  • 方案 - 列表之和

    我正在尝试实现一个计算 list 的函数 其名称是sum define sum elemList if null elemList car elemList sum cdr elemList 0 上面的实现给出了错误的结果 例如 gt su
  • 为什么我的 Scheme 函数返回错误“应用程序:不是过程”?

    我想获得 a b c 的第二个值 但我不想使用 cadr 我可以得到正确的答案 car cdr a b c b 但是当我构建该函数时 define test lambda list car cdr list test a b c 我收到以下
  • (Chez) 用于隐藏 lambda 的方案宏

    我想编写一个宏来创建速记语法来隐藏更详细的 lambda 表达式 但我很难理解如何编写宏 我意识到这是反对使用它们的一个论据 给出这个例子 define alist example x 1 2 3 y 4 5 6 z 7 8 9 defin
  • 如何在方案中向后打印字符串?

    我知道如果我按照以下方式编写方案代码并输入 单词 a b c 它将以相同的顺序输出列表 您能告诉我是否有一种方法可以以相反的顺序打印出来 例如 列出 c b a 它需要是我以相反顺序打印出来的用户输入 所以 我不能称之为 反向 a b c
  • 方案语言:合并两个数字

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

随机推荐

  • C 动作和变量

    为什么当我使用 char paraula 15 int longparaula 0 copia paraula paraula longparaula 它说longparaula 0 paraula 没问题 并且包含我输入的字符的值 但 l
  • 将大的 2^63 十进制转换为二进制

    我需要将大十进制转换为二进制 我该怎么做 有问题的十进制是这个 3324679375210329505 怎么样 String binary Long toString 3324679375210329505L 2
  • 获取有关自动变量的帮助不起作用

    我正在研究 PowerShell 建议致电网站和书籍Get Help about Automatic Variables例如 获取返回的自动变量列表 我尝试打电话Get Help使用以下参数 但我总是得到返回的 cmdlet 列表 abou
  • PyQt 事件发出两次

    我正在尝试实现 拖放 项目QListWidget to QGraphicsView 我继承了自己的班级MooView from QGraphicsView并封装dragMove dragEnter and drop事件 但在测试时 我注意到
  • 使用“ec2-user”登录,而不是使用 aws 中的用户数据 root 登录

    我有一个基于 RHEL 6 4 64 位 AMI 的 Amazon EC2 实例 写完一些shell脚本后 我用它创建了自己的 AMI 映像 我正在编写用户数据部分 它将删除 home ec2 user sudo rm rf home ec
  • OpenSSL 在 PKCS12 导出期间挂起,并显示“将‘屏幕’加载到随机状态”

    我正在使用 OpenSSL 不是 makecert 生成自签名 SSL 证书 以在 IIS 中使用 openssl req x509 newkey rsa 2048 keyout key pem out cert pem days 365
  • 创建和使用 Laravel 4 命令

    编辑 找出我出错的地方并将答案放在最后 我正在尝试创建一个 Laravel 命令 我可以看到它与 Laravel 3 中的 任务 相比发生了很大的变化 但是我似乎无法让它运行 这些是我已采取的步骤 php artisan 命令 make 导
  • 禁用远程调试时应用程序在启动时崩溃

    我正在尝试在我的手机 iPhone 上安装我的反应本机应用程序 它安装正常 但在启动时崩溃并显示此错误消息 undefined is not an object evaluating navigator userAgent indexOf
  • java.security.cert.CertificateException:证书不符合算法约束

    我有一个地图应用程序可以添加地理信息系统 9 3 给定 URL 的底图 我想要添加的 URL 之一来自客户的 URL 并且是安全的 我的地图应用程序之前使用 Java 6 并且能够毫无问题地添加安全 URL 我现在升级到 Java 7 并得
  • 对于集群中具有两个节点的专用计算机,ES_HEAP_SIZE 的正确值

    我有一台 ES 2 2 0 的专用机器 它运行在 Windows Server 2012 R2 上 拥有 128GB 内存 关于ES 我计划在这台机器上的集群中有两个节点 根据elasticsearch yml中ES的推荐 确保ES HEA
  • 如何在django视图中获取模板路径

    所以我试图在我的视图中获取模板路径 有没有一种动态的方法来做到这一点 因为目前我正在对路径进行硬编码 html C Users user Desktop project src templates project html 模板路径 TEM
  • 让 html 成为标签 href 等待 onclick 中的异步函数返回?

    我有一个带有 onclick 的链接 该链接应该在 href 之前执行 a class btn btn primary href mode full Promeni rezim prikaza a 被调用的js函数的相关部分如下所示 fun
  • 在 Windows 操作系统上批量运行多个 m 文件,“无需”关闭先前运行的 m 文件

    我的目的是顺序运行一系列m文件和python程序 感谢 Mofi Shai 和 moarningsun 我发现这个批处理文件在我的 Windows 操作系统上是成功的 start 01 wait C Program Files MATLAB
  • 将数组传递给 Spark Lit 函数

    假设我有一个 numpy 数组a包含数字 1 10 1 2 3 4 5 6 7 8 9 10 我还有一个 Spark 数据框 我想向其中添加我的 numpy 数组a 我认为一列文字就可以完成这项工作 这不起作用 df df withColu
  • 多重处理与 NumPy 不兼容[重复]

    这个问题在这里已经有答案了 我正在尝试使用多处理运行一个简单的测试 测试运行良好 直到我导入 numpy 即使它没有在程序中使用 这是代码 from multiprocessing import Pool import time impor
  • 如何在 Angularjs 中根据值显示字形眼睛?

    我对表单中的所有字段都有字形眼 如果用户单击 glyphicon eye open 那么它将更改为 glyphicon eye close 然后我将该特定字段名称推送到数组中 在我的 JSON 响应中 我获取了隐藏字段值 但如何使用该值并调
  • null 测试与 try catch

    有没有人有关于执行 null 测试与将代码包装在 try catch 中的指标 我怀疑空测试更有效 但我没有任何经验数据 环境为C net 3 x 代码对比为 Dude x Dude Session xxxx x x null new Du
  • 如何检测门逻辑仿真中的振荡?

    我正在用 C 编写基于周期的逻辑模拟 我想模拟组合电路和时序电路 组合电路很简单 但顺序电路给我带来了麻烦 我想检测振荡并显示适当的警告消息 有没有一种简单的方法来检查单个门可以改变其状态多少次并且仍然保持电路稳定 我考虑过 最小反馈弧集算
  • 如何在我的 Pin 注释上显示标题并使其可单击以执行某些操作?

    在我的 MapView 中 我在某些位置放置了图钉 现在我想在这些图钉注释上显示一些标题并使其可单击 以便单击时我可以推送另一个视图 请帮忙 这是代码片段 使用此方法的自定义注释视图 MKAnnotationView mapView MKM
  • Let 和 Let* 的方案混淆

    let x 2 y 3 let x 7 z x y z x 对于上面的代码 为什么答案是 35 而不是 70 在第二let x 是 7 所以 z 应该是 7 3 10 然后结果应该是 7 10 70 我知道还有另一个是 let 我在这 2