问题标签 [r5rs]
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.
list - 方案 - 从列表列表中删除子列表
我有一个列表列表,例如。((x y z) (y z) (x y))
,我想知道是否R5RS Scheme
有办法从这个列表中只删除子列表:例如。(y z)
是一个子列表,因为它已经在 'inside'(x y z))
中,在我们的示例中将离开((x y z))
。
这可能比我想象的更复杂,但我猜它会使用地图或过滤器,但我不确定你如何以这种方式“清理”整个列表。
list - 可以让 R5RS 代码与 SchemeUnit 一起使用吗?
在我上的一堂课中,我们使用旧的 R5RS 标准方案来解决 SICP 作业。我喜欢先测试开发,所以我认为单元测试框架会很好,我选择了 SchemeUnit 来编写小测试。
到目前为止,这工作得很好,只是在输出中测试原语(字符串、数字等),但是在尝试测试列表时遇到了障碍。这可能与用于运行测试的 Scheme 方言的差异有关:
foo.scm: (define a-list (list 2))
foo-tests.scm: (check-equal? a-list (list 2))
运行测试时的结果:
为了使测试套件运行,我必须添加"#lang scheme/base
到 foo-tests.scm 和require
schemeunit 包的顶部。在 foo.scm 中,我需要在顶部拥有#lang r5rs
和。(#%provide (all-defined))
我猜列表在 R5RS 和“方案/基础”中的实现方式有所不同。有什么办法让他们一起工作吗?为什么会失败({} vs ())?
list - SCHEME - 编写我自己的追加会产生一个奇怪的结果
我想编写自己的附加,用于将元素附加到现有列表。
我写了以下内容:
但是当我这样做时:
我得到:
所以问题是,为什么(1 2 30 . 11)
而不是(1 2 30 11)
?
谢谢
编辑:
固定的 :
scheme - 这个方案代码是尾递归的吗?
编辑:谢谢大家。我是这种语言的新手(两天前才开始使用它),所以这就是我不熟悉 conds 的原因。如果我有时间,我可能会重写它,但我只是想确保我的基本逻辑是正确的。再次感谢!
我的任务是创建一个尾递归函数,它从列表中删除第 n 个元素,1 <= n <= listlength,只有两个参数,列表 x 和元素 n。因此,(remove 1 '(abcd)) 将返回 (bcd)。我已经写了以下内容,并希望确信它确实是尾递归的。我唯一不清楚的是递归调用是否可以嵌套在 IF 语句中。
time - r5rs 中的时间或线程函数
我制作了一个游戏,它使用时间来计算重力对时间(速度和运动)的影响。虽然游戏主要使用 r5rs 函数,但我使用thread
,sleep
和其他函数来更新和记住时间,这些函数在球拍中定义。现在我想让 te 游戏在只有 r5rs 可用的微控制器上运行。是否可以仅使用 r5rs 制作类似的东西?
这是我目前使用的代码(使用球拍功能):
lambda - 方案 lambda 和所有程序运行
尝试运行这些程序时,似乎一切都很好,直到我打电话
在我将 'memorize TO ' 更改为 unmemorize 之后发生的事情是它现在都做到了
我不明白我什么时候调用'unmemoize,它也进入了memoize =S
namespaces - Racket R5RS“没有绑定 #%app 语法转换器”
我正在尝试在 Racket 中执行以下 R5RS 代码:
但是,这会导致错误:
在普通球拍中,我可以使用命名空间锚来解决这个问题,如下所示:
但由于 R5RS 没有 定义命名空间锚点,我无法以这种方式解决它。如何修改 R5RS 环境以使原始代码正常工作?
scheme - 如何实现 call-with-values 以匹配 R5RS 中的值示例
R5RS 说……
值可能定义如下:
然而,它并没有说明如果以这种方式实现值,那么如何实现 call-with-values。那么,如果以这种方式实现值,将如何实现 call-with-values 呢?
(出现这种情况是因为我试图让一些使用带值调用的代码与不支持它的 TinyScheme 一起工作。我通过伪造值和带列表的带值调用来管理,但是——当我看到这在 R5RS 中——我想知道这是否是一个更好的解决方法。)
lisp - DrRacket 中的简单嵌套评估
所以我正在为我的编程语言课做一些练习题,其中一项任务是创建一个脚本“MyEval”,它允许你进行简单的嵌套加法和乘法运算。因此,例如,该程序将能够做到这一点(MyEval '(1 +(3 *4)))
或更深,但不必做减法或超过 2 个数字和一个运算符。所以没那么复杂。但是,我的想法很糟糕,我希望得到一些指导。这是我到目前为止所拥有的
但是你们可能会注意到,这只会解决最后一个内括号,所以如果我这样做,(MyEval '(1 + (1 + 2)))
我会得到 3,而不是 4。感谢任何指导或提示,我不知道我的标题有多准确,但如果不是合适的请告诉我。
谢谢!
map - 在方案中使用地图,当我使用显示功能时发生了一件奇怪的事情
当我调用此程序时,在方案中(我正在使用球拍 R5RS)
它返回
这是为什么?虚空是怎么回事?