Thank you Steve with the help of the robect-hooke library I got close:
(defn ^:test-meta t [a] (println a)) ;;copy the metadata to the function object (def tt (with-meta t (meta #'t))) (defn adv1 [f a] (println "advising" f "with meta" (meta f)) (f a)) (defn adv2 [f a] (println "hey!" f "your meta is" (meta f)) ;this is going to be nil as hooke provides it's own wrapper without copying the metadata (f a)) (add-hook #'tt #'adv1) (add-hook #'tt #'adv2) (tt "a") With little extra effort I will get what I want. Truth is the library uses alter-var-root under the hood. Well, guess that's some of the idiomatic Clojure way of life I will have to get used to. On Wednesday, August 5, 2015 at 4:25:55 PM UTC+2, squeegee wrote: > > I wish I could do that in Clojure: > > (defn ^:transactional someFunction [...] ...) > > and then have somehow means to decorate someFunction (yes, I am aware > there is no container) > > > The code you proposed does have an effect on the someFunction var (but not > the function it ends up bound to). That might be enough for you to > accomplish what you’re after. > > user=> (defn ^:transactional someFunction [x] (prn x)) > #'user/some-function > user=> (meta *#'some-function*) > {:ns #<Namespace user>, :name someFunction, :file "...", *:transactional > true*, :column 1, :line 1, :arglists ([x])} > > —Steve > > -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.