问题标签 [r7rs]
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.
scheme - 如何在 R7RS 中定义一个返回多个值的过程
TL;DR:如何定义foobar
可用作(let-values ((foo bar) (foobar)) ...)
.
R7RS 定义了两个过程floor/
和truncate
,计算两个数相除的商和余数。我发现这真的很棘手,因为我只能将这些过程与let-values
(or let*-values
) 一起使用。一个更重要的问题是我找不到一种方法来定义我自己的返回多个值的过程。
有人有什么想法吗?
笔记:
floor/
和的定义在报告truncate/
第 37 页的顶部。- 我没有幸运地成功安装任何符合 R7RS 的解释器或编译器,所以我还没有测试过上述任何想法。当我有机会时,如果需要,我会更新这个问题。
scheme - 如何在 Guile 中定义两个 R7RS 库
我有这两个R7RS库,我一一进入Guile REPL:
当我在 Guile REPL 中输入第二个库定义时,我收到此错误:
我试图将这两个库放入同一个文件 ( mylibs.sld
) 并运行guile mylibs.sld
,但我得到完全相同的错误。
据我了解,我收到此错误是因为define-library
在 Guile 读取第二个库定义时不知何故变得未定义。Guile 已经不知道是什么define-library
意思了。这是一种奇怪的行为。到底是怎么回事?如何在 REPL 中定义两个 R7RS 库?
Guile 版本:3.0.1
scheme - 如何只消费 Scheme 中的第一个返回值?
给定一个返回多个值的 Scheme 函数,例如:
如何只使用第一个返回值,而忽略其他值?
scheme - R7RS-small:quasiquoted 表达式的等价性
R7RS -small 标准,第 20-21 页的 4.2.8 Quasiquotation 部分说
相当于
和
但不等同于:
上面的表达式与前三个有何不同?上面所有四个表达式的计算结果都是一样的:'((1 2) 3 4 five 6)
.
scheme - Scheme R7RS 在宏展开时设置和使用状态的便携方式?
我正在寻找一种可移植的方式来设置数据,然后其他宏可以使用这些数据。所有修改都将在顶层进行。我想出了这个:
这在逻辑上做了我想要的,但它似乎只适用于赤壁方案;gauche 两次都打印空列表,kawa 抛出关于空体的错误。什么地方出了错?这在原则上是否可行?
scheme - 定义实现是否依赖于 R7RS?
我早就知道这define
是可怕的,应该谨慎使用,除非您确定您的实现如何处理它。出于兴趣,我最近打开了 R7RS 并阅读了我能找到的所有内容define
,但没有任何东西让我觉得其中任何内容都依赖于实现。在 R7RS 中我是否遗漏了什么或者define
不再依赖于实现?
scheme - 可以用 letrec* 替换每个 letrec 吗?
对于每个 100% 兼容的不依赖于任何特定于实现或未定义行为的 R7RS 小程序,是否letrec
可以替换程序中的每个实例letrec*
而不会导致任何行为变化?换句话说,是否有任何 R7RS 小程序的外观letrec
不能替换为letrec*
?
scheme - 为什么 Scheme `filter` 表单不能“按顺序”处理列表元素?
(filter procedure list)
适用procedure
于的每个元素list
并返回一个新列表,该列表仅包含procedure
返回 true 的元素。
(R. Kent Dybvig The Scheme 编程语言)(在线)
从这个描述中可能不明显的是,虽然返回列表中的元素以与 中相同的顺序出现,但R6RS 中没有指定list
调用的顺序。procedure
(然而,Racket 将程序“从第一个到最后一个”应用于每个元素)
最近一个活跃的答案
提到它需要一个filterfunc
which 在其参数列表
中按顺序工作。应该如何编写这个函数?
提供了我对该问题的解释的答案。
scheme - R7RS-small 实现可以每个文件只允许一个定义库吗?
define-library
是否允许兼容的 R7RS-small 实现对每个文件的数量施加限制?一些 R7RS-small 实现,例如 Guile 3.0.7 define-library
,每个文件只允许一个。这是与标准的偏差,还是 R7RS-small 允许的?