I'm still trying to get my head around the new features. Seeing more code examples will definitely help. In the meantime, here is some stream-of-consciousness thoughts and questions.
Datatypes: I'm a little worried about the strong overlap between reify/proxy, deftype/defstruct, and defclass/gen-class. I can just imagine the questions a year from now when people join the Clojure community and want to understand how they differ. So I think that eventually, there needs to be a very clear "story" as to why you'd choose one over the other. Or better yet, maybe some of the older constructs can be phased out completely. Is there a way to customize the way that types defined by deftype print in the REPL? While these datatype and protocol constructs are taking shape, maybe now is the time to discuss what kind of "privacy" settings are worthwhile in a language like Clojure. I think Java's system of private/public/protected is probably overkill for Clojure. But do people feel that some degree of data hiding is worthwhile? For example, might you want to hide some deftype fields from keyword lookup? Protocols: I don't understand whether there's any way to provide a partial implementation or default implementation of a given protocol/interface, and I believe this to be an important issue. For example, a protocol for < and > that provides a default implementation of > in terms of < and a default implementation of < in terms of >, so that you only need to implement one and you get the other for free. I'm also thinking about the relationship in Clojure's source between ISeq and ASeq. ASeq provides the partial, default implementation of more in terms of next, for example. How does this kind of thing look with the new protocol system? -- 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