diff options
author | scgilardi <scgilardi@gmail.com> | 2008-12-01 02:12:17 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2008-12-01 02:12:17 +0000 |
commit | 91ec8a061a46dfd536cefffc50e263872ebf75a1 (patch) | |
tree | 842c405a8d48043544af3c5c5bafef804748c13a /src/clojure | |
parent | 7b9fc66912ab46a7c8b14131b075be30763b95bc (diff) |
remove deprecated init-once, add defonce-
Diffstat (limited to 'src/clojure')
-rw-r--r-- | src/clojure/contrib/def.clj | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/clojure/contrib/def.clj b/src/clojure/contrib/def.clj index a9ad891f..3537d1ad 100644 --- a/src/clojure/contrib/def.clj +++ b/src/clojure/contrib/def.clj @@ -16,15 +16,6 @@ (ns clojure.contrib.def) -(defmacro init-once - "Initializes a var exactly once. The var must already exist. - (NOTE: Since SVN 1008, Clojure includes defonce. Please use that instead - of init-once.)" - [var init] - `(let [v# (resolve '~var)] - (when-not (.isBound v#) - (.bindRoot v# ~init)))) - (defmacro defvar "Defines a var with an optional intializer and doc string" ([name] @@ -61,6 +52,13 @@ [name & decls] (list* `defstruct (with-meta name (assoc (meta name) :private true)) decls)) +(defmacro defonce- + "Same as defonce but yields a private definition" + ([name expr] + (list `defonce (with-meta name (assoc (meta name) :private true)) expr)) + ([name expr doc] + (list `defonce (with-meta name (assoc (meta name) :private true :doc doc)) expr))) + (defmacro defalias "Defines an alias for a var: a new var with the same value and metadata as another with the exception of :namespace, :name, :file, :line, and |