 ;;;; ___________________________________________________________________________
 ;;;; ---- Terminology ----
 
-;;; The phrase "equivalent value" is used when two numbers, possibly of
-;;; different types, are the same value as seen from the point of view of
-;;; mathematics. So, for example, 2 and 2.0 are equivalent values.
+;; The phrase "equivalent value" is used when two numbers, possibly of
+;; different types, are the same value as seen from the point of view of
+;; mathematics. So, for example, 2 and 2.0 are equivalent values.
 
 ;;;; ___________________________________________________________________________
 ;;;; ---- Clojure's numeric types ----

;;;;   structures define equals() (and thus =) as a value, not an identity,
;;;;   comparison.

;;; I think there's a problem with the doc string:
;;; - What does it mean by "in a type-independent manner"?
;;;   - Is this defined in any authoritative place?
;;;   - The doc string for `==` uses the phrase "type-independent" with a
;;;     different (and, to me, intuitive) meaning.
;;; - I would expect e.g. (= 2 2M) => true, but that's not so.
;;;   - I'm not the only one:
;;;     - See http://dev.clojure.org/jira/browse/CLJ-1333.

;;; Jeez, Clojure is poorly specified in places.

;;; /Clojure Programming/ p433-444 was helpful.

;;; We need the notion of categories of numbers. (Is this defined in any
;;; authoritative place?)
;;; - We have:
;;;   - integers (e.g. 2, 2N)
;;;   - ratios (e.g. 2/3)
;;;   - arbitrary-precision decimals (e.g. 2M, 2.0M)
;;;   - limited-precision decimals (e.g. 2.0, (Float. 2.0))

;;;; ---------------------------------------------------------------------------
;;;; ---- Things that are fine ----

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

;; The doc string uses the phrase "type-independent" in a way that is (to me)
;; intuitive, but which has a different meaning to that in the doc string for
;; `=`.

;; From /Clojure Programming/:
;;   Clojure opts to provide a third notion of equality, specifically to
;;   address the need for type-insensitive equivalence tests.

(fact "Numbers with an equivalent value are equal using `==`"
  (== (Byte. (byte 2))
