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
-~----------~----~----~----~------~----~------~--~---

Reply via email to