Re: how do I reference a var that is in my core namespace?

2013-02-21 Thread larry google groups

That worked. I find it a little surprising that this is the correct way to 
do this, but it worked, so I am happy. Thank you. 


On Thursday, February 21, 2013 1:43:18 PM UTC-5, Sean Corfield wrote:
>
> I tend to have this at the top of most of my namespaces: 
>
> (def ^:private my-ns *ns*) 
>
> This evaluates *ns* at load/init time when it is bound to the 
> namespace being loaded and then initializes my-ns with that value. 
> Then I use my-ns throughout that namespace. 
>
> *ns* is dynamically bound to whatever namespace is currently executing 
> which is why it changes "unexpectedly" when you're trying to do 
> something obvious with it. 
>
> On Thu, Feb 21, 2013 at 10:30 AM, larry google groups 
> > wrote: 
> > I wanted to have some functions run when an app starts, and I wanted 
> this to 
> > be configurable, because I plan to use the same architecture for several 
> > apps. So I thought I could have the function names as strings inside of 
> maps 
> > inside of a set (that I sort), in a config file. And I thought I could 
> use 
> > ns-resolve *ns* symbol to turn the strings into references to the vars 
> where 
> > the function definitions are stored. But somehow this is not working. I 
> have 
> > this right now, in mpdv.core, which is the core namespace is an app I 
> > created with lein: 
> > 
> > 
> > (defn process-startup-hooks [] 
> >   "2013-02-21- remember, each row in hooks is a map: {:order-of-events 
> 1, 
> > :event-name 'connect-to-database'}" 
> >   (connect-to-database) 
> >   (let [hooks (sort-by :order-of-events 
> > (:events-called-when-the-app-starts-hooks @um/interactions))] 
> > (doseq [x hooks] 
> >   (let [event-as-symbol (symbol (:event-name x)) 
> > event (ns-resolve *ns* event-as-symbol)] 
> > (println " what kind of var is this? ") 
> > (println *ns*) 
> > (println (type event-as-symbol)) 
> > (println event-as-symbol) 
> > (if-not (nil? event) 
> >   (event)) 
> > 
> > 
> > "event" is always nil. One of the events listed in um/interactions is 
> > "connect-to-database" so, as a test, I hardcoded it here, to be sure it 
> > could run here, and it runs fine (first line after the comment). So the 
> var 
> > for the function is known. But this: 
> > 
> > (ns-resolve *ns* event-as-symbol) 
> > 
> > returns nil, even when event-as-symbol is "connect-to-database". 
> > 
> > When I println *ns* to the terminal output, I see the namespace is: 
> > 
> > # 
> > 
> > Which surprises me somewhat. 
> > 
> > How do I get ns-resolve to look in mpdv.core for the var that I want it 
> to 
> > find? 
> > 
> > -- 
> > -- 
> > You received this message because you are subscribed to the Google 
> > Groups "Clojure" group. 
> > To post to this group, send email to clo...@googlegroups.com 
> > Note that posts from new members are moderated - please be patient with 
> your 
> > first post. 
> > To unsubscribe from this group, send email to 
> > clojure+u...@googlegroups.com  
> > For more options, visit this group at 
> > http://groups.google.com/group/clojure?hl=en 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "Clojure" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to clojure+u...@googlegroups.com . 
> > For more options, visit https://groups.google.com/groups/opt_out. 
> > 
> > 
>
>
>
> -- 
> Sean A Corfield -- (904) 302-SEAN 
> An Architect's View -- http://corfield.org/ 
> World Singles, LLC. -- http://worldsingles.com/ 
>
> "Perfection is the enemy of the good." 
> -- Gustave Flaubert, French realist novelist (1821-1880) 
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: how do I reference a var that is in my core namespace?

2013-02-21 Thread Sean Corfield
I tend to have this at the top of most of my namespaces:

(def ^:private my-ns *ns*)

This evaluates *ns* at load/init time when it is bound to the
namespace being loaded and then initializes my-ns with that value.
Then I use my-ns throughout that namespace.

*ns* is dynamically bound to whatever namespace is currently executing
which is why it changes "unexpectedly" when you're trying to do
something obvious with it.

On Thu, Feb 21, 2013 at 10:30 AM, larry google groups
 wrote:
> I wanted to have some functions run when an app starts, and I wanted this to
> be configurable, because I plan to use the same architecture for several
> apps. So I thought I could have the function names as strings inside of maps
> inside of a set (that I sort), in a config file. And I thought I could use
> ns-resolve *ns* symbol to turn the strings into references to the vars where
> the function definitions are stored. But somehow this is not working. I have
> this right now, in mpdv.core, which is the core namespace is an app I
> created with lein:
>
>
> (defn process-startup-hooks []
>   "2013-02-21- remember, each row in hooks is a map: {:order-of-events 1,
> :event-name 'connect-to-database'}"
>   (connect-to-database)
>   (let [hooks (sort-by :order-of-events
> (:events-called-when-the-app-starts-hooks @um/interactions))]
> (doseq [x hooks]
>   (let [event-as-symbol (symbol (:event-name x))
> event (ns-resolve *ns* event-as-symbol)]
> (println " what kind of var is this? ")
> (println *ns*)
> (println (type event-as-symbol))
> (println event-as-symbol)
> (if-not (nil? event)
>   (event))
>
>
> "event" is always nil. One of the events listed in um/interactions is
> "connect-to-database" so, as a test, I hardcoded it here, to be sure it
> could run here, and it runs fine (first line after the comment). So the var
> for the function is known. But this:
>
> (ns-resolve *ns* event-as-symbol)
>
> returns nil, even when event-as-symbol is "connect-to-database".
>
> When I println *ns* to the terminal output, I see the namespace is:
>
> #
>
> Which surprises me somewhat.
>
> How do I get ns-resolve to look in mpdv.core for the var that I want it to
> find?
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>



--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




how do I reference a var that is in my core namespace?

2013-02-21 Thread larry google groups
I wanted to have some functions run when an app starts, and I wanted this 
to be configurable, because I plan to use the same architecture for several 
apps. So I thought I could have the function names as strings inside of 
maps inside of a set (that I sort), in a config file. And I thought I could 
use ns-resolve *ns* symbol to turn the strings into references to the vars 
where the function definitions are stored. But somehow this is not working. 
I have this right now, in mpdv.core, which is the core namespace is an app 
I created with lein:


(defn process-startup-hooks []
  "2013-02-21- remember, each row in hooks is a map: {:order-of-events 1, 
:event-name 'connect-to-database'}"
  (connect-to-database)
  (let [hooks (sort-by :order-of-events 
(:events-called-when-the-app-starts-hooks @um/interactions))]
(doseq [x hooks]
  (let [event-as-symbol (symbol (:event-name x))
event (ns-resolve *ns* event-as-symbol)]
(println " what kind of var is this? ")
(println *ns*)
(println (type event-as-symbol))
(println event-as-symbol)
(if-not (nil? event)
  (event))


"event" is always nil. One of the events listed in um/interactions is 
"connect-to-database" so, as a test, I hardcoded it here, to be sure it 
could run here, and it runs fine (first line after the comment). So the var 
for the function is known. But this:

(ns-resolve *ns* event-as-symbol)

returns nil, even when event-as-symbol is "connect-to-database". 

When I println *ns* to the terminal output, I see the namespace is: 

#

Which surprises me somewhat. 

How do I get ns-resolve to look in mpdv.core for the var that I want it to 
find? 

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.