On Sun, May 20, 2012 at 10:22 AM, Warren Lynn <wrn.l...@gmail.com> wrote: > So from what I read the philosophy of Clojure discourages inheritance > on concrete data types. However, maybe I am too entrenched in my OO > thinking, how do I define a new record type that includes all the data > members of another record type? I am thinking about the classic > Employee/Person example.
Don't make data members. Use maps and multimethods. You don't need types for this. You have data about a thing, keep it has data, suddenly all the functions that work on data structures (select-keys, update-in, clojure.set) all work on your data instead of having your data locked away in a type. > If I can define a record of Employee with Person's data members > included, even that is not true inheritance (as no protocols of > "Person" will be automatically extended to "Employee"), I need that > for function re-use (so a function working on Person will > automatically work on Employee because Employee is guaranteed to have > all the data members in Person). > > Also, again, maybe I am too OO minded, is there a way inherit another > record type's protocol implementation? That seems to give the best > combination of both worlds (OO and functional), so you can either have > you own very customized combination of data type/protocols, or use the > very common OO pattern. Just like we have both the single-typed > dispatching (which is more OO like and covers a large portion of use > cases), and more advanced multimethods. > > Thanks. > > -- > 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 -- And what is good, Phaedrus, And what is not good— Need we ask anyone to tell us these things? -- 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