私が探している機能は次のようなものです:
(split 1/3) => (1 . 3)
(split 1093/209) => (1093 . 209)
RnRS、SRFI、またはカスタム実装で可能ですか?
私が探している機能は次のようなものです:
(split 1/3) => (1 . 3)
(split 1093/209) => (1093 . 209)
RnRS、SRFI、またはカスタム実装で可能ですか?
はい。有理数の分子と分母を取得するには、次の 2 つの手順を使用できます。
(numerator (/ 6 4)) ⇒ 3
(denominator (/ 6 4)) ⇒ 2
それが示すように、返される値は最低の項です。レポートでは、分母が常に正であり、0 の分母が 1 と定義されていることが指定されています。
この動作は長い間変更されていません。R3RS でも最新の R7RS まで同じ記述が見られるので、現在存在するすべての Scheme 実装に存在すると予想できます。
楽しみのために:
(define (split number)
(cons (numerator number)
(denominator number)))