   (= 2 2N (Integer. 2) (short 2) (Short. (short 2)) (byte 2) (Byte. (byte 2)))
   => true)
 
-(fact "Rationals are usefully comparable using `=`"
+(fact "Ratios are usefully comparable using `=`"
   (= 2/3 2/3)
   => true)
 

;;; authoritative place?)
;;; - We have:
;;;   - integers (e.g. 2, 2N)
;;;   - rationals (e.g. 2/3)
;;;   - arbitrary-precision decimals (e.g. 2M, 2.0M)
;;;   - limited-precision decimals (e.g. 2.0, (Float. 2.0))


      (let [unboxed-max-long Long/MAX_VALUE]
        (unchecked-inc unboxed-max-long))
      => Long/MIN_VALUE)))

;;;; ___________________________________________________________________________
;;;; ---- Some things about BigInts and Ratios ----

(fact "About the ratio of a BigInt and a Long-or-a-BigInt"
  (let [an-even-big-int (+' Long/MAX_VALUE 1)
        an-odd-big-int  (+' Long/MAX_VALUE 2)]
    (assert (even? an-even-big-int))
    (assert (odd?  an-odd-big-int))
    (assert (= (type an-even-big-int) clojure.lang.BigInt))
    (assert (= (type an-odd-big-int)  clojure.lang.BigInt))
    (fact "If the ratio is an integer it is a BigInt"
      (type (/ an-even-big-int 2))  => clojure.lang.BigInt
      (type (/ an-even-big-int 2N)) => clojure.lang.BigInt)
    (fact "If ratio is not an integer it is a Ratio"
      (type (/ an-odd-big-int 2))   => clojure.lang.Ratio
      (type (/ an-odd-big-int 2N))  => clojure.lang.Ratio)))
