anchor.diff:     ```"
     (/ (numerator y) (denominator y)))
   
  -(defgeneric r+ (x y) "Add rational numbers")
  +(defgeneric r+ (x y) "Add rational numbers" :hidden)
   (defmethod (r+ rational rational) (x y)
     (let* [((xn xd) (normalised-rational-components x))
            ((yn yd) (normalised-rational-components y))]
  
positive.code: (defmethod (r* number rational) (x y) (r* (->rat x) y))
  (defmethod (r* number number)   (x y) (r* (->rat x) (->rat y)))
  
  (defun r/ (x y)
    "Divide rational numbers"
    (r* x (recip y)))
  
  (defun rexp (x y)
    "Raise the rational number X to the primitive numeric (integral or float)
     power Y.
  
     ### Example:
     ```cl
     > (rexp (rational 1 4) 2)
     out = (rational 1 16)
     ```"
    (if (>= y 0)
      (let* [((xn xd) (normalised-rational-components x))]
        (rational (^ xn y) (^ xd y)))
  
negative.code:   { :__add r+
      :__sub r-
      :__mul r*
      :__div r/
      :__pow rexp
      :__lt r<
      :__lte r<= })
  
  (defmethod (pretty rational) (x)
    (let* [((xn xd) (normalised-rational-components x))]
  