Depending on exactly what you're trying to do, the simplest way is to use defrecord: user=> (defrecord Bag [state]) user.Bag user=> (def b (Bag. :foo)) #'user/b user=> b #:user.Bag{:state :foo} Though what you see above is from pr, not str: user=> (str b) "user.Bag@53e935f4" user=> (prn b) #:user.Bag{:state :foo} nil So we just make a change: user=> (defrecord Bag [state] Object (toString [bag] (p
