aboutsummaryrefslogtreecommitdiff
path: root/src/clojure
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2008-12-01 02:12:17 +0000
committerscgilardi <scgilardi@gmail.com>2008-12-01 02:12:17 +0000
commit91ec8a061a46dfd536cefffc50e263872ebf75a1 (patch)
tree842c405a8d48043544af3c5c5bafef804748c13a /src/clojure
parent7b9fc66912ab46a7c8b14131b075be30763b95bc (diff)
remove deprecated init-once, add defonce-
Diffstat (limited to 'src/clojure')
-rw-r--r--src/clojure/contrib/def.clj16
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