summaryrefslogtreecommitdiff
path: root/coding-exercises/2/1.rkt
blob: 8f15e64212f7fba4fe82a77fcd1ac7063baf35cc (plain)
1
2
3
4
5
6
7
8
9
10
#lang racket

(define (make-rat n d)
  (define (sign x)
    (cond
      ((and (< x 0) (< d 0)) (* -1 x))
      ((and (< 0 x) (< d 0)) (* -1 x))
      (else x)))
  (let ((g (gcd n d)))
    (cons (sign (/ n g)) (abs (/ d g)))))