What does 'java.lang.ClassCastException: clojure.lang.Var$Unbound cannot be 
cast to clojure.lang.IDeref' mean. I'm getting this a lot and I want to 
understand it better, make it easier for me to avoid this. Most of the time 
I just end up adjusting my def/defn's around until it works. This is hardly 
optimal. 

(this is all on clojure 1.3.0)

An example...

(ns app-admin.models.current-user
  (:require [noir.session :as session]
            [app-admin.models.users :as users]))

(def get-id
  (session/get :uid))

(defn set-user! [user] 
  (session/put! :uid {:_id user}))

Give me an exception for get-id

ClassCastException clojure.lang.Var$Unbound cannot be cast to 
clojure.lang.IDeref  clojure.core/deref (core.clj:2078)

So set-user! binds correctly, but get-id doesn't seem to...

=> (get-id)
llegalStateException Attempting to call unbound fn: 
#'app-admin.models.current-user/get-id  clojure.lang.Var$Unbound.throwArity 
(Var.java:43)

Then I check it...

=> (meta #'get-id)
{:ns #<Namespace app-admin.models.current-user>, :name get-id}

So it's there, the fn is bound; I'm not exactly sure what's going on and 
nor what I'm missing about how this works to help me avoid problems like 
this in future. Just guessing and tweaking has gotten me so far, but that's 
not sustainable. 

Thanks!

-Travis

-- 
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