1

我正在寻找的功能是这样的:

(split 1/3) => (1 . 3)
(split 1093/209) => (1093 . 209)

在 RnRS、SRFI 或任何自定义实现中是否有可能?

4

1 回答 1

4

是的。要获得有理数的分子和分母,您可以使用两个程序:

(numerator (/ 6 4))    ⇒  3
(denominator (/ 6 4))  ⇒  2

正如它所展示的那样,返回的值是最低的术语。该报告指定分母始终为正,并且分母 0 定义为 1。

这种行为已经很长时间没有改变了。我在 R3RS 中看到了相同的描述,直到最新的 R7RS,所以你可以期望它存在于今天存在的所有 Scheme 实现中。

纯娱乐:

(define (split number)
  (cons (numerator number)
        (denominator number)))
于 2014-04-18T10:31:26.323 回答