On Nov 13, 9:24 am, James Reeves <weavejes...@googlemail.com> wrote: > Are there any plans to use protocols to define polymorphic functions > like conj and get? Perhaps with an "untype" function to remove type > metadata so one could always get at the datastructures hidden by the > protocol. e.g. > > (defn sql-get [table key] > (sql-query > (str "select * from " table " where " (get (untype table) :primary- > key) " = ?") > key)) > > (extend ::sql-table Gettable > {:get sql-get}) > > Then 'get' could be used in a more generic fashion: > > user=> (def accounts (sql-table accounts)) > > user=> (get accounts 10) > {:id 10, :login "jsmith", :password "1234"} >
I'll have to think about that. Your 'untype' above is really just a specialization of type aliasing: (as-type nil table) where (as-type ::Foo x) would create a view of x with dynamic type Foo. I'm still thinking about such aliasing and its implications. Rich -- 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