codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; rational numbers (define (frac n d) (if (zero? d) (error 'frac "can't have zero denominator") (if (negative? d) (frac (- n) (- d)) (let ((g (gcd n d))) (if (= g 1) (cons n d) (cons (/ n g) (/ d g))))))) (define (plus x y) (let ((a (car x)) (b (cdr x)) (c (car y)) (d (cdr y))) (frac (+ (* a d) (* b c)) (* b d)))) (define (minus x y) (let ((a (car x)) (b (cdr x)) (c (car y)) (d (cdr y))) (frac (- (* a d) (* b c)) (* b d)))) (define (times x y) (let ((a (car x)) (b (cdr x)) (c (car y)) (d (cdr y))) (frac (* a b) (* c d)))) (define (divide x y) (let ((a (car x)) (b (cdr x)) (c (car y)) (d (cdr y))) (frac (* a d) (* b c)))) (define (less-than? x y) (let ((a (car x)) (b (cdr x)) (c (car y)) (d (cdr y))) (< (* a d) (* b c)))) (display (plus (frac 1 3) (frac -1 7))) (newline) (display (minus (frac 1 3) (frac -1 7))) (newline) (display (times (frac 1 3) (frac -1 7))) (newline) (display (divide (frac 1 3) (frac -1 7))) (newline) (display (less-than? (frac 1 3) (frac -1 7))) (newline)
Private
[
?
]
Run code
Submit