 (defn standard-describe-mismatch [x]
   (pr-str x))
 
+(defn pp [x]
+  (with-out-str (pprint/pprint x)))
+
 (defn describe-class-mismatch [x]
-  (str (pr-str x)
+  (str (pp x)
        (if (clojure.core/nil? x)
          ""
          (str " <" (class x) ">"))))
 
-
 (defn describe-mismatch-feature [x feature-name feature-mismatch]
   (str (standard-describe-mismatch x) " with " feature-name " " feature-mismatch))
+
 
 (defn on
   "combinator. Passes if the (f the-value) matches the matcher"

  (:require [clojure.string :as string]
            [clojure.core :as core]
            [clojure.test :as test]
            [clojure.data :as data]))
;; Matcher
;; Match
;;

   (fn [x]
     (let [[things-in-a things-in-x things-in-both] (data/diff a x)]
       (str (describe-class-mismatch x)
            (if (not= things-in-a things-in-x)
              (str

                "\n    diff:"
                "\n       +: " (pp things-in-a)
                "\n       -: " (pp things-in-x))))))})

(defn <=
  "matches based if the value given is greater-than or equal to
