blob: 5d184dcc844911e8ec7cae7e8058ecf0d158f053 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
;;;; Under Creative Commons Attribution-ShareAlike 4.0
;;;; International. See
;;;; <https://creativecommons.org/licenses/by-sa/4.0/>.
(define-module (net ricketyspace sicp two one)
#:export (make-rat))
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))
(define (make-numer n neg?)
(if neg? (* -1 (abs n))
(abs n)))
(define (make-denom d) (abs d))
(define (make-rat n d)
(let ((g (abs (gcd n d)))
(neg? (< (* n d) 0)))
(cons (/ (make-numer n neg?) g)
(/ (make-denom d) g))))
|