 
 ;(clojure.pprint/pprint 
 
-#_(defxn foo
+(defxn foo
   ;`[clojure.set/join ~(+ 1 2)]
   ;if you want some form to be evaluate then place ~ before it
   ;this is the defblock

  ;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)
  )
;)


                notnil? :all ;both spec and unspec
                notnil? :all-specified; :all-sac
                notnil? :except :unspecified
                ~(list partial > 0) :except :specified
                (partial > 0) [:all [:not :specified] [:except [:a :c]] ]
                ]
   ;invariants ran over all specified params but not over the unspecified(and thus optional ones which have the default value assigned)
