I already have this function. It's called channel #Clojure on freenode :p. All I got to do is wave my magic wand at hiredman and CLABANGO!.
On Apr 1, 8:17 pm, Mitch <mitchell.kot...@gmail.com> wrote: > While still learning clojure, I often times need a function and am not > sure if it already exists or where to look for it. I thought it would > be useful to be able to give a return value and arguments and search > all functions for ones which return the given value when called with > the given arguments. Here's what I came up with: > > (defn test-for > "Tests to see if a given function called with given arguments > results > in given value, catching any exceptions that occur" > [v f & args] > (try (= v (apply f args)) > (catch Exception e nil))) > > (defn find-func > "Given a value and arguments, searches all public functions in all > namespaces" > [v & args] > (map key > (mapcat > (fn [ns_] > (filter > #(binding [*out* nil *in* nil] > (apply test-for v (val %) args)) > (ns-publics (the-ns ns_)))) > (all-ns)))) > > Binding *in* and *out* stops any IO functions from messing up the > search. There's probably still ways this could be dangerous though, > depending on the given args. Hope someone finds this useful or > improves upon it. > > -Mitch --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---