dispacio <https://github.com/johnmn3/dispacio#function-extension> has a shadow-extend-like capability:
(defp assoc string? [s i c] (str (subs s 0 i) c (subs s (inc i)))) And then (assoc "abc" 2 'x);#_=> "abx" Using alter-var-root in dispacio correctly would prevent var replacement warnings I believe, similar to s/instrument, but I haven't figured out how to do it yet in a cross-platform way. PRs welcome. V/r John On Saturday, January 19, 2019 at 9:58:29 AM UTC-5, Janko Muzykant wrote: > > Hi, > > Is there an way to replace body of existing (interned) function with own > code still being able to call original fn? > Suppose, I have a function: > > (defn fetch-data [arg1 arg2] > (db/fetch-data ...)) > > I would like to intern a slightly modified version of this fn. Something > like this: > > (defn fetch-data [& args] > (let [result (apply original-fetch-data args)] > (transform-result result))) > > The problem I see is how to keep the reference to original fetch-data fn > (here denoted by original-fetch-data), > so it could be still called in a altered version of fetch-data function. > > Best, > JM. > > > > -- 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.