   (foo :c 1 :d 1 :e 1)
   )
 
-(defn foo [& all]
+#_(defn foo [& all]
   (cond (odd? (count all))
     (println "odd")
     :else

   ;invariants that are ran over the optional non-specified(on call) params
   ;invariants for the optional unspecified(at call) params; since you can't not specify any of the :required params
   :ou_invariants [notnil? :only [:a :b]
                       (partial > 0) :all
                       (partial > 1) :except [:a]
                       ]
   
   ;maybe not implement this:
   ;:allow_extras false ;by default false, if to allow parameters that are none of the defined ones in defblock also collect them in extras as a vector in order of occurrence

  ;TODO: allow invariants functions for each param and throw when any of them fail(obviously)
  ;TODO: ignore optional params that weren't passed on call
  ;TODO: throw when required params aren't passed on call
  (clojure.pprint/pprint fxn_defblock);firsta)
  )
)

