 ;;;; ---- The thing that is, in my opinion, contrary to the doc string ----
 
 (fact "`=` return false for comparisons of equivalent numbers of different categories"
-  ;; From /Clojure Programming/
-  (fact (= 1 1.0) => false)
-  (fact (= 1N 1M) => false)
+  ;; From /Clojure Programming/ with some changes and additions
+  (fact (= 2 2.0)    => false)
+  (fact (= 2 2M)     => false)
+  (fact (= 2N 2M)    => false)
   (fact (= 1.25 5/4) => false))
+
+;;; From /Clojure Programming/:
+;;;   Clojure’s = could obviate these type differences (as Ruby and Python do),
+;;;   but doing so would impose some runtime cost that would be unappreciated by
+;;;   those who need to maximize the performance of programs that work with
+;;;   homogeneous numeric data.
 
 ;;;; ---------------------------------------------------------------------------
 ;;;; ---- My playing ----

;;;;   Returns non-nil if nums all have the equivalent value (type-independent),
;;;;   otherwise false.

(fact (== 2 2N 2M 2.0M 2.0) => true) ; true even for inexact things

;;;; ___________________________________________________________________________

(fact (type (- 2N 1N)) => clojure.lang.BigInt)

(fact (type (/ 4N 2N)) => clojure.lang.BigInt)
(fact (type (/ 2N 4N)) => clojure.lang.Ratio)


;;;; ___________________________________________________________________________
;;;; ---- =-and-same-type ----

(defn =-and-same-type
  "Returns true iff (= x y) is true and x and y are of the same type."

(fact (type 2.0)   => Double)
(fact (type 2.0)   => java.lang.Double)

(fact "Ratios are turned into Longs if possible"
  (type 4/2) => Long)

;;; Some non-Clojure Java numeric types

