   ;if you want some form to be evaluate then place ~ before it
   ;this is the defblock
   {;:something {:a ~(+ 1 2)}
+   :a (hash-map :a 1 :b 2)
+   :b ~(hash-map :a 3 :b 4 :a 5) ;that's one way to use dup keys and you wouldn't even catch the bug
+   :c {:a 6 :b 7 
+       ;:a 8 ;can't dup this, will throw
+       }
    ;aliases are supported to allow later renaming the params used within the defblock without worrying that you forgot to rename all instances
    :aliases {;p1 p2 where p1 is parameter name used in here and p2 is the actual name the param has in the function body
              ;all names are keywords to allow evaluating the entire defblock and they are actually symbols inside the function body

;you need not bind this though, unless you really want to name it something
;but it won't clash with others, supposedly - there may be some case when it could clash let within a let
(def ^:dynamic *fxn_defBlock_symbol* (gensym 'fxn_defBlock))


(defmacro get_fxn

  )

(get_fxn *fxn_defBlock_symbol* defBlock) ;(defmacro get_fxn_defBlock ...)
(get_fxn *fxn_defBlockRaw_symbol* defBlockRaw) ;(defmacro get_fxn_defBlockRaw ...)
;(defmacro get_fxn_defBlock2
;  []
;  ;like get the value of <the symbol returned by *fxn_defBlock_symbol*>
