Thank you, Ken and Michael. Not knowing how to do that bothered me since it felt like I couldn't create data structures that were on the same level of the built-in data structures. :)
On Jun 15, 6:59 pm, Michael Nygard <mtnyg...@gmail.com> wrote: > You could also use reify: > > (defn make-foo [s] > (reify clojure.lang.IFn > (invoke [this] (str "Hello, " s)))) > > ((make-foo "RJ")) > "Hello, RJ" > > I have to admit, though, that I'm unclear on the relative merits of defrecord > vs. reify. Anyone want to comment? > > Cheers, > -Michael Nygard > > On Jun 15, 2011, at 12:57 PM, Ken Wesson wrote: > > > > > > > > > > > On Wed, Jun 15, 2011 at 3:53 PM, RJ Nowling <rnowl...@gmail.com> wrote: > >> Hi, > > >> I'm sorry if this has been asked before, but I would like to know how > >> to create data structures in Clojure that can be used in the same way > >> as the built-in data structures. For example, I can access the > >> elements of a vector by (my-vec 1). How can I implement this > >> interface when creating a data structure in Clojure? > > > (defrecord Foo [...] > > ... > > IFn > > (invoke [this] (do-this-on-zero-argument-call)) > > (invoke [this x] (do-when-called-with-x)) > > (invoke [this x y] (+ x y))) > > > => ((Foo.) 33 9) > > 42 > > => > > > -- > > Protege: What is this seething mass of parentheses?! > > Master: Your father's Lisp REPL. This is the language of a true > > hacker. Not as clumsy or random as C++; a language for a more > > civilized age. > > > -- > > 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 > > Michael T. Nygard > mtnyg...@gmail.comhttp://www.michaelnygard.com/ > > Release It! Design and Deploy Production-Ready Softwarehttp://bit.ly/ReleaseIt > > Beautiful Architecturehttp://bit.ly/BeautifulArchitecture > > 97 Things Every Software Architect Should Knowhttp://bit.ly/97Things -- 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