问题标签 [htdp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
133 浏览

racket - HTDP2e 练习 65 写下函数的名称(构造函数、选择器和谓词)

我从 HTDP2e(练习 65)中提出了以下问题:

习题 65. 看看下面的结构类型定义:

(定义结构电影 [标题制片人年份])

写下函数的名称(构造函数、选择器和谓词)。

我的回答是:

make-movie 是一个构造函数。电影?是谓词。movie-title、movie-producer 和 movie-year 是选择器。所以

但我得到一个错误:“define-struct:期望一个字段名,但找到一个字符串”你能帮我吗?如何编辑我的代码?

0 投票
1 回答
117 浏览

racket - 球拍/初学者学生语言代码错误

我正在尝试使用 Racket 上的初学者学生语言逐个字母地为单词制作动画。但是,这段代码给了我一个错误“函数调用:在左括号后期望一个函数,但找到了一个部分”。我加粗了给我带来问题的部分。有什么建议么?

(定义单词“blahlahblahblahblahbla”)

(定义(letterByLetter a)

(overlay ( (substring theWord 0 a) 50 "red") (empty-scene 500 500)))

(逐字母动画)

0 投票
1 回答
47 浏览

racket - 在“列表”主题中查询

如果有人能告诉这个问题,那将是一个很大的帮助:

编写一个函数 sqr-list,它使用一个数字列表并生成这些数字的平方列表,使用内置的 sqr 函数计算。通过改进下面提供的模板来编写函数。

(定义(sqr-list lon)

(cond [(empty?lon) ...]

0 投票
1 回答
130 浏览

unit-testing - 如何使用 RackUnit 检查错误?

我有以下球拍代码。

使用空字符串调用 string last 按预期失败:

如何使用RackUnit库检查错误?

我试过了

和其他几个变体代替,exn:fail?但我没有找到合适的变体。

0 投票
2 回答
90 浏览

csv - 如何改为使用 read-csv-file 从字符串中读取?

2htdp /batch-io库包含将read-csv-fileCSV 文件读入列表的有用过程。它以文件名作为参数。不幸的是,它没有将包含 CSV 的字符串作为其参数。假设我在一个字符串变量中有一个 CSV,我想用read-csv-file它来解析它。有没有办法避免将 CSV 保存到文件中以便能够解析 CSV?

文档说:

读取标准输入设备(直到关闭)或文件 f 的内容并将其生成为逗号分隔值列表的列表。

可能可以利用标准输入功能来实现这一点,但我不知道如何继续这个想法。

0 投票
1 回答
77 浏览

types - 为什么《如何设计程序》一书在他们的答卷上选择了这种方法?

我正在使用着名的书籍How to Design Programs。更具体地说,第一版(我有实体版)。

在第 6 章中,有一些结构练习。在其中之一中,您需要模拟交通信号灯并使用效果(突变)来改变它们。

我指的是练习 6.2.5关于next假设给你交通灯的下一个颜色的功能。

本书提供的答题卡为:

在下一个函数中,我做了类似的事情,在提供的测试中获得了相同的结果:

与本书的答案不同,我的代码不使用and也不放散单个符号(例如“红色”)。

这种差异引起了我的兴趣,因为这本书非常强调教你如何设计代码。让我感兴趣的一点是,原始解决方案使用了一个and(结合后续效果),除了在每个条件语句的末尾使用“孤独的”“红色”、“黄色”或“绿色”之外,这似乎是不必要的。

我不明白最后一个符号语句或 and 的目的。

是否有一些风格或概念上的原因使这种方法看起来更冗长且不太清晰?

我阅读这本书正是为了改进我编写代码的方式。

0 投票
1 回答
158 浏览

recursion - 在递归函数中处理多种可能的返回类型

我正在使用 Racket ISL+ 编写一个计算一系列结构的递归。如果结构失败了一些参数,我想返回一个#false. 但是,在递归期间的某个时刻,我知道计算机正在获取1 + 1 + 1 + 1 + 1 + 1 + #false,这给了我一个错误。

有没有办法让我声明如果发现错误只是#false从原始调用中返回一个值?