如何定义一个在R7RS中返回多个值的过程



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


R7RS定义了计算商floor/truncate两个过程。两个数除以的余数。我发现这真的很棘手,因为我只能在let-values(或let*-values)中使用这些程序。一个更重要的问题是,我找不到一种方法来定义我自己的返回多个值的过程。

有人有什么想法吗?

注意:

  • floor/truncate/的定义在报告第37页的顶部。
  • 我没有足够的运气成功地安装任何r7rs兼容的解释器或编译器,所以我还没有测试上述任何想法。如果需要的话,我有机会会更新这个问题。

你试过values了吗?报告在第53页提到了这件事。

(define (foobar)
(values 1 2))
(let-values (((foo bar) (foobar)))
(cons foo bar))

最新更新