(defonce name expr)
defs name to have the root value of the expr iff the named var has no root value, else expr is unevaluated
user> (defonce foo 5)
#'user/foo
user> foo
5
;; defonce does nothing the second time
user> (defonce foo 10)
nil
user> foo
5
;; Supports ^:private
user=> (defonce ^:private foo 3)
#'user/foo
user=> foo
3
user=> (in-ns 'user2)
user2=> user/foo
java.lang.IllegalStateException: var: user/foo is not public