我正在寻找的功能是这样的:
(split 1/3) => (1 . 3)
(split 1093/209) => (1093 . 209)
在 RnRS、SRFI 或任何自定义实现中是否有可能?
我正在寻找的功能是这样的:
(split 1/3) => (1 . 3)
(split 1093/209) => (1093 . 209)
在 RnRS、SRFI 或任何自定义实现中是否有可能?
是的。要获得有理数的分子和分母,您可以使用两个程序:
(numerator (/ 6 4)) ⇒ 3
(denominator (/ 6 4)) ⇒ 2
正如它所展示的那样,返回的值是最低的术语。该报告指定分母始终为正,并且分母 0 定义为 1。
这种行为已经很长时间没有改变了。我在 R3RS 中看到了相同的描述,直到最新的 R7RS,所以你可以期望它存在于今天存在的所有 Scheme 实现中。
纯娱乐:
(define (split number)
(cons (numerator number)
(denominator number)))