Re: Use of eval

2011-11-22 Thread vitalyper
Gary, You are probably removing try/catch as well. ClassNonFoundException is expected and silenced with catch. (defn cl-factory Returns a Commons Logging-based implementation of the LoggerFactory protocol, or nil if not available. [] (try (Class/forName foo.bar) ; eval removed

Re: Use of eval

2011-11-22 Thread Gary Trakhman
I think you're confusing compile-time with run-time. A try-catch wouldn't affect the compiler. Perhaps you actually have commons-logging in your classpath? It's pulled in by many libraries. Or you forgot to remove the quote in addition to removing the eval in your testing. Here's the code that

Re: Use of eval

2011-11-22 Thread Gary Trakhman
Also I think this line doesn't actually do anything: (Class/forName foo.bar) It will effectively just ask the classloader to load the class. You removed more than the eval in your referenced code, you removed the code that did anything. That code needs to be there. It's eval'd because

Re: Use of eval

2011-11-22 Thread vitalyper
Gary, You were right with your initial reply. Sorry I did not get it. Thanks for your help in understanding this. On Nov 22, 1:58 pm, Gary Trakhman gary.trakh...@gmail.com wrote: Also I think this line doesn't actually do anything:  (Class/forName foo.bar) It will effectively just ask the

Re: Use of eval

2011-11-22 Thread Alan Malloy
If you try to do it without eval and you don't have the apache stuff on your classpath, then you get an exception while compiling, before class/forname is ever called. On Nov 22, 11:33 am, vitalyper vitaly...@yahoo.com wrote: Gary, You were right with your initial reply. Sorry I did not get

Use of eval

2011-11-18 Thread vitalyper
Came across this code in clojure.tools.logging (defn cl-factory Returns a Commons Logging-based implementation of the LoggerFactory protocol, or nil if not available. [] (try (Class/forName org.apache.commons.logging.Log) (eval `(do (extend

Re: Use of eval

2011-11-18 Thread Gary Trakhman
My speculation is that the eval is required in the case that commons-logger is not in the classpath. The code wouldn't compile without it. -- 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

Re: Use of eval

2011-11-18 Thread vitalyper
I don't think you are right - it does compiles without it. After more thinking my guess is that eval is used to combine extend and reify in the same function. Let's see if somebody else could shed a light on this. On Nov 18, 12:45 pm, Gary Trakhman gary.trakh...@gmail.com wrote: My speculation

Re: Use of eval

2011-11-18 Thread Gary Trakhman
I get this when i try it in a blank project, removing the eval and the quote: Unknown location: error: java.lang.ClassNotFoundException: org.apache.commons.logging.Log core.clj:16:8: error: java.lang.ClassNotFoundException: org.apache.commons.logging.Log (core.clj:16) Compilation failed.