【问题标题】:How to define a procedure that returns multiple values in R7RS如何在 R7RS 中定义一个返回多个值的过程
【发布时间】:2021-10-17 10:51:12
【问题描述】:

TL;DR:如何定义可用作(let-values ((foo bar) (foobar)) ...) 的过程foobar


R7RS 定义了两个过程floor/truncate,计算两个数字相除的商。我觉得这真的很棘手,因为我只能将这些程序与let-values(或let*-values)一起使用。一个更重要的问题是我无法找到一种方法来定义我自己的返回多个值的过程。

有人有什么想法吗?

注意:

  • floor/truncate/ 的定义在the report 的第 37 页顶部。
  • 我没有幸运地成功安装任何符合 R7RS 的解释器或编译器,所以我还没有测试过上述任何想法。如果有需要,我会在有机会时更新这个问题。

【问题讨论】:

  • 该功能自从在 R5RS 中引入以来就没有改变。因此,您不会在 R7RS 的语言更改下找到它。

标签: scheme r7rs


【解决方案1】:

你试过values吗? The report 在第 53 页提到它。

(define (foobar)
  (values 1 2))

(let-values (((foo bar) (foobar)))
  (cons foo bar))

【讨论】:

  • 当我第一次阅读它时,我没有注意到values 的这种可能用法......这就是我想要的。非常感谢。
猜你喜欢
  • 2021-11-17
  • 2023-04-04
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 2019-04-29
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多