 
 ;;; Metaconstant symbols
 
-(tabular 
+(tabular
   (fact "metaconstant symbols begin and end with dots"
     '?candidate   ?arrow metaconstant-symbol?)
      ?candidate   ?arrow
-     ...foo...      => 
-     .foo.          => 
+     ...foo...      =>
+     .foo.          =>
      foo            =not=>
      .foo           =not=>
      foo.           =not=>

     ...            =not=>)

(tabular "or they begin and end with dashes"
  (fact 
    '?candidate   ?arrow metaconstant-symbol?)
     ?candidate   ?arrow
     ---foo---      => 
     -foo-          => 
     -a-b-          =>
     foo            =not=>
     -foo           =not=>

    (pr-str mc) => "..name.."))

(fact "Metaconstants implement Named"
  (name (Metaconstant. '..name. {})) => "..name.")

(fact "Metaconstants are equal if their names are *comparable*."
  (fact "equal names are comparable"
    (Metaconstant.    '...name... {}) => (Metaconstant. '...name... {})
    (Metaconstant.    '...name... {}) =not=> (Metaconstant. '...other... {}))

  (fact "but so are names that have a different number of dots or dashes"
    (Metaconstant.    '...name... {}) => (Metaconstant. '.name. {})
    (Metaconstant.    '---name- {}) => (Metaconstant. '-name--- {}))

  (fact "However, dot-names are not equal to dash-names"
    (Metaconstant.    '...name... {}) =not=> (Metaconstant. '---name--- {}))

  (fact "values are irrelevant"
    (Metaconstant.    '...name... {:key "value"}) => (Metaconstant. '...name... {:key "not-value"})
    (Metaconstant.  '...NAME... {:key "value"}) =not=> (Metaconstant. '...name... {:key "value"}))

  (fact "Metaconstants are equal to symbols with a comparable name"
    (= (Metaconstant. '...name... {}) '.name.) => truthy
    (= (Metaconstant. '...name... {}) '...not-name...) => falsey
