使用trace显示racket中的程序

2024-01-07

我一直在完成 SICP 的最后几个练习第 1 章,其中几个练习使用高阶函数。目前,我正在尝试调试 1.45 解决方案中的一个问题,该问题引发了元数不匹配。产生误差的函数是对定点函数求解器两次应用平均运算的结果。

这将使我的调试工作更加努力a lot如果我可以转储某种过程的表示形式,那么会更容易,因为该过程已通过其他几个过程运行,这些过程在引发错误之前会对其进行更改。我查看了 DrRacket 的调试文档,添加了(require racket/trace) and (require errortrace)我的模块,我想我熟悉调试系统的所有功能 - 但我仍然不知道如何做到这一点。

DrRacket 的答案将是理想的,但任何事情都有帮助。


添加(需要球拍/跟踪)不会在控制台中引发任何程序显示。你想使用(trace function-name)当您在跟踪调用中使用给定函数时,这将在控制台中打印紫色(默认颜色)线。例子

(define sum (λ (x y) (+ x y)))
(define multiply
  (λ (x y)
    (multiply-aux x y x)
    ))
(define multiply-aux (λ (x y res) 
                       (if (= y 0) 0 
                           (if (= y 1) res 
                               (multiply-aux x (- y 1) (sum res x))))))
(require racket/trace)
(trace sum)

在控制台中:

> (multiply 4 5)
>(sum 4 4)
<8
>(sum 8 4)
<12
>(sum 12 4)

在 DrRacket 6.0.1 中测试

如果您需要更多帮助,请告诉我。

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

使用trace显示racket中的程序 的相关文章

  • 方案let语句

    在函数式编程语言scheme中 没有赋值语句 但在一个let陈述 let x 2 x 3 您正在分配2 to x 那么为什么这不违反函数式编程中没有赋值语句的原则呢 Scheme 是一种函数式编程语言 这一说法是不正确的 在Scheme中
  • letrec、命名let和内部定义的常见用法?

    我有几本关于Scheme的书 其中一些提到了名为let和letrec的书 但没有一本真正给出了令人信服的例子 我的意思是 我何时以及为何使用其中一个而不是另一个 是否存在 letrec named let 确实是比内部定义甚至外部辅助过程更
  • 按方案中的第一个元素对列表列表进行排序

    例如 我正在研究按第一个元素对列表列表进行排序 排序 列表 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 我使用的算法是冒泡排序 我修改了它来处理列表 但是 该代码无法编译
  • 如何重写Scheme中的“begin”?

    As the 维基百科 http en wikipedia org wiki Scheme programming language Standard forms文章解释说 begin在Scheme中是一种库形式 可以使用更基本的形式重写
  • 小阴谋家 - 从哪里开始?

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

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

    有谁知道如何找出 lambda 表达式中的自由变量 自由变量是不属于 lambda 参数的变量 我当前的方法 这对我毫无帮助 是简单地使用 car 和 cdr 来遍历表达式 我的主要问题是确定一个值是否是一个变量或者它是否是方案原语之一 有
  • 函数中的变量

    我看到了下面的代码 第一次调用 next num 回报1 第二个返回2 define next num let num 0 lambda set num num 1 num next num 1 next num 2 我无法理解的是 num
  • 方案/球拍:画布操作

    1 正如标题所述 当我调整窗口大小时 我绘制的对象消失 但矩形保持原样 2 原点从左上角开始 但我希望它在左下角 3 除了绘图库之外 我找不到任何缩放功能 所以如果我希望实现这样的功能 一个选项是通过绘制更大的对象并刷新画布来 缩放 def
  • 传递给过程的列表转换为过程内列表的列表

    我正在 DrRacket 上调试这段代码 lang racket define last element on list lambda l cond null l null cdr l car l else last element on
  • 不知道如何解决 SICP 练习 1.11

    练习1 11 http mitpress mit edu sicp full text book book Z H 11 html thm 1 11 一个功能f由以下规则定义f n n if n lt 3 and f n f n 1 2f
  • CMake:如何在多个文件上运行自定义命令来生成源文件?

    我有以下情况 我想编译一些Scheme文件Gambit https github com gambit gambit成可执行文件 为此 我使用 gambit 将所有计划文件翻译 生成为 C 和目标文件 然后将其编译并链接为可执行文件 假设我
  • 如何获取 SICP、Scheme、练习 2.78 等中的 put 和 get 函数

    我正在尝试在 SICP 中做练习 2 78 但 put 和 get 函数未知 我尝试过多种语言 比如相当大 racket r5rs mit scheme mzscheme等 我什至下载了SICP支持 http www neilvandyke
  • Scheme/Lisp 嵌套循环和递归

    我正在尝试解决方案中的一个问题 该问题要求我使用嵌套循环或嵌套递归 例如我有两个列表 我必须检查它们的笛卡尔积的条件 解决这些类型问题的最佳方法是什么 有关如何简化这些类型的函数的任何指示吗 I ll elaborate a bit sin
  • 如何在球拍中查看扩展宏?

    我得到了这个答案https stackoverflow com a 70318991 https stackoverflow com a 70318991关于编写一个简单的宏来记录宏扩展时的时间 然后始终返回该时间 lang racket
  • 在Racket中将结构递归转化为累积递归

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

    在 Haskell 中 与许多其他函数式语言一样 函数foldl被定义为 例如 foldl 0 1 2 3 4 10 这没关系 因为foldl 0 1 2 3 4 根据定义 0 1 2 3 4 但是 在 球拍 中 foldl 0 1 2 3
  • 如何使用Emacs运行方案?

    我跟着这个tutorial http jeffcjensen net scheme 并成功安装了Emacs STk Quack 问题是我怎样才能像在 Racket 中那样加载我的程序 在 Racket 中 我可以在上方窗口中编辑代码 输入一
  • 返回列表的前 n 个

    如何返回第一个n列表的元素 这是我所拥有的 define returns lambda list n cond null list 0 n n 1 car list cons car list returns cdr list n else
  • 如何在mit-scheme中正确使用(读取)?

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

随机推荐

  • Docker 中的 Mariadb:MariaDB Connector/Python 需要 MariaDB Connector/C >= 3.2.4,发现版本 3.1.16

    我尝试以下 Dockerfile syntax docker dockerfile 1 FROM python 3 11 slim bullseye EXPOSE 80 WORKDIR app RUN apt get update apt
  • 热键、快捷键和加速键有什么区别?

    他们有什么区别呢 在Qt中 如果我有QPushButton的热键 我可以通过 Alt 来实现 但如果是qaction 我可以按 仅有的 In Windows an accelerator key is application global
  • 使用python调整两个字符串之间的1个空格

    我有两个字符串 gt gt gt a abcd gt gt gt b xyz gt gt gt c a b gt gt gt c abcdxyz 我怎样才能得到abcd xyz结果添加时a and b 只需在两个字符串之间添加一个空格即可
  • 什么样的工作受益于 OpenCL

    首先 我很清楚 OpenCL 并没有神奇地让一切变得更快 我很清楚 OpenCL 有局限性 现在回答我的问题 我习惯使用编程进行不同的科学计算 我处理的一些事情在计算的复杂性和数量方面非常激烈 所以我想知道 也许我可以使用 OpenCL 来
  • Tensorflow 精度/召回率/F1 分数和混淆矩阵

    我想知道是否有一种方法可以实现 scikit learn 包中的不同分数函数 如下所示 from sklearn metrics import confusion matrix confusion matrix y true y pred
  • 如何替换字符串中出现的所有特定字符?

    我正在将 csv 读入a import csv import collections import pdb import math import urllib def do work a get file c pythonwork cds
  • 如何将 DbSet 转换为 List

    鉴于以下简化的实体框架 6 上下文 我尝试使用实体填充列表 但在如何通过反射进行转换 我相信 方面遇到问题 public class FooContext DbContext public virtual IDbSet
  • NSSharingService 用于发送电子邮件并读取电子邮件正文

    我正在使用 NSSharingService 在邮件应用程序中打开一个电子邮件撰写窗口 NSSharingService sharingService NSSharingService sharingServiceNamed NSShari
  • jQuery Mobile 响应式面板和文本区域

    我有 jQuery Mobile 应用程序http gudulin ru test problem html http gudulin ru test problem html 页面加载后左侧面板打开 my panel panel open
  • 在 for 循环内分配变量

    我正在尝试一个小代码 for i 0 i lt 2 i do p i pra i done 预期输出是 必须分配变量 p0 pra0 p1 pra1 但 bash 将此作为命令 并且输出为 p0 pra0 command not found
  • 检测 Android v2 地图何时加载

    我正在编写一个应用程序 当用户按下按钮时 它会拍摄某个区域周围的 9 个地图快照 在循环中 使用它来移动和保存 map moveCamera CameraUpdateFactory newLatLngZoom new LatLng mSta
  • gpg2 导入 gpg1 密钥失败(gpg 2.1.15、Ubuntu 17.10)

    当我尝试使用 gpg2 导入导出良好的 gpg1 密钥时 公钥导入工作正常 gpg import path to publickey gpg gpg directory home me gnupg created gpg new confi
  • 如何使用使用 Java 11 的最新 SonarQube 免费版本分析 Java 8 代码? [复制]

    这个问题在这里已经有答案了 我已经使用其配置中指出的 Java 11 安装了最新版本的 SonarQube 即wrapper config 我读到它甚至可以分析用 Java 8 编写的代码 但我收到以下异常 错误 未能执行目标 org so
  • iOS 以编程方式取消 TouchID 身份验证对话框

    是否可以在之后以编程方式取消 TouchID 警报对话框LAContext evaluatePolicy称呼 如果是 怎么办 并非 Apple 发布的每个 API 都会进入developer apple com 或 Xcode 的文档查看器
  • 合并 data.frame 中的两行

    如同合并一个 data frame 中的行 https stackoverflow com questions 33285663 merge rows in one data frame and 当行不相交且包含空值时 将两行合并到一个数据
  • JPQL 类似 不区分大小写

    我想按名称搜索用户表中的数据 不区分大小写 Repository public interface UserRepository extends JpaRepository
  • Play 框架:重定向到带有参数的控制器方法

    我正在使用 PLAY 框架 2 2 1 构建一个 Web 应用程序 并尝试在地址栏中显示所请求站点的所有可用 http get 查询参数 甚至是请求中未设置的参数 在以下情况下 并非所有 http get 参数都已设置 我想使用默认值添加未
  • 如何在 Erlang 中同步使用端口?

    我想对 Erlang 中的端口进行同步调用 也就是说 将一些输入发送到通过端口连接的正在运行的操作系统进程 并直接获取其输出 而不是使用消息 有一个port call据说可以做到这一点的函数 然而 文档 https www erlang o
  • std::ifstream 明显比 FILE 慢吗?

    我被告知我的库比应有的速度慢 解析特定文件 文本文件 大小 326 kb 的速度慢了 30 倍以上 用户建议这可能是我正在使用std ifstream 大概不是FILE 我不想盲目重写 所以我想我应该先检查这里 因为我的猜测是瓶颈在其他地方
  • 使用trace显示racket中的程序

    我一直在完成 SICP 的最后几个练习第 1 章 其中几个练习使用高阶函数 目前 我正在尝试调试 1 45 解决方案中的一个问题 该问题引发了元数不匹配 产生误差的函数是对定点函数求解器两次应用平均运算的结果 这将使我的调试工作更加努力a