The reason it starts with def (and ends in -fn) is because it is a function 
used by a macro, which has a global effect.

On Monday, 22 October 2012 11:17:12 UTC-4, Jim foo.bar wrote:
>
>  A couple of issues:
>
> 1) 'name' is a fn in core so it's almost never a good idea to shadow it 
> like this... 
> 2) also it is not a good idea for a fn to start with 'def' unless it 
> actually defines a top-level form inside it like in macros 
> 3)If you need all your keys in capital I think it would be faster to just 
> capitalise them without checking...not sure though...
>
> Jim
>
>
> On 22/10/12 16:09, Bronsa wrote:
>  
> I've had this happening to me too.
> Couldn't figure out wtf was going on.
>
> Until somebody understands what's the problem is, you can(let [s (.sym 
> ^clojure.lang.Keyword k)] ..) and call name on s
>
> 2012/10/22 JvJ <kfjwh...@gmail.com <javascript:>>
>
>> I'm getting a REALLY weird error.  I'm trying to check if a set of 
>> keywords are all uppercase.
>> When binding a value to 'res' in the let statement, I traverse a list of 
>> keywords.  However, the calls to the name function on those
>> keywords give nil.  The debug print statement clearly shows that the 
>> class of k is a keyword, and yet its name is nil?
>>
>> I really don't get it.
>>
>>
>> ;; Program
>> (defn defrel-fn
>>   "Adds a relation definition to the *relations* map."
>>   [name keys]
>>   (let [res (every? (fn [k]
>>                       (println "k: " (name k) ", " (class k)) ;; Added 
>> for debugging
>>                       (= (name k) (.toUpperCase (name k))))  keys)
>>         ;; keys need to be all in uppercase letters!
>>         ;;_ (when-not res (throw (Exception. "Error.  All keys must be 
>> upper-case.")))
>>         kns (apply hash-map (mapcat vector keys (range))) ;; represents a 
>> map of keys to indices
>>         ]
>>     (swap! *relations*
>>            assoc name {:fields kns
>>                        :unfields (vec keys) ;; A map of indices to keys 
>> is best represented as a vector
>>                        })))
>>
>> ;; Output from repl
>> => (worldrep.core/defrel-fn 'mother [:SELF :CHILD])
>> k:  nil ,  clojure.lang.Keyword
>> NullPointerException   clojure.lang.Reflector.invokeNoArgInstanceMember 
>> (Reflector.java:314)
>> -- 
>> 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<javascript:>
>> 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 <javascript:>
>> 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 post to this group, send email to clo...@googlegroups.com <javascript:>
> 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 <javascript:>
> 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 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

Reply via email to