pretty cute Phil! It does break for closures that use vars, like this:
(let [a inc] (def dinc (fn [x] (inc (a x))))) Caused by: java.lang.IllegalArgumentException: No matching field found: v for class clojure.lang.Compiler$VarExpr so you probably want to test the return type from "(.init local)", and invoke the proper method there. On Feb 28, 4:03 pm, Phil Hagelberg <p...@hagelb.org> wrote: > On Feb 25, 7:45 am, Jules <jules.gosn...@gmail.com> wrote: > > > I want to include functions in my metadata - e.g. I might want to > > specify a version comparator function to allow tables to decide > > whether a new version that they are presented with is actually more > > recent than the one that they already hold. I might want to support > > multiple primary or version keys by providing a pk-fn or version-fn > > etc. > > > When I serialise the metadata from server to client, the client cannot > > deserialise the metadata because the classes that were created > > server-side to implement the functions are not present. > > We cooked up a simple library that allows for serializing functions at > the Seattle Clojure group: > > https://github.com/Seajure/serializable-fn > > It's able to serialize lexical scope along with the function, but > there may be certain types of expressions that would cause trouble > when they are closed over. It should be pretty easy to fix if you're > interested in improving it a bit. > > This approach is a bit naive as it requires you to know in advance > which functions you want to serialize and use the serializable fn > macro, but depending on your needs it could get the job done. It has > the advantage of being many many orders of magnitude simpler (20 LOC) > than any other function serialization mechanism. > > -Phil -- 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