Just to chime in and second what others have said, functions do not encode
their name in an accessible way. The best option right now is to use
clojure.repl/demunge on the class name.
This is a best-effort function as the transformation from Clojure function
name to Java class class name is
No need to import the compiler. Use clojure.repl/demunge
Sean Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)
_
From: Ravindra Jaju
It's a good start.
You could next import clojure.lang.Compiler and call the static method
demunge like so on the output "cool_func_BANG_"
(Compiler/demunge "cool_func_BANG_") ; => "cool-func!"
On Tue, Oct 24, 2017 at 11:27 AM, Shantanu Kumar
wrote:
> Not sure whether
If I had to guess I'd say the name of the function isn't stored with it
nil
boot.user=> (clojure.reflect/reflect (fn foo [] nil))
{:bases #{clojure.lang.AFunction}, :flags #{:public :final}, :members
#{#clojure.reflect.Constructor{:name boot.user$eval1530$foo__1531,
:declaring-class
Not sure whether you can deterministically recover the exact name at all
times, but the following can get you started:
(re-matches #".*\$(.*)__.*" (.getName (class (fn cool-func! [] (println
"hi")
I have altered the name to `cool-func!` on purpose to show where it may
break.
Shantanu
Let's say I have this anonymous function:
(fn cool [] (println "hi"))
How can I extract the name from it?
Obviously the name of the function is stored with the function. How can I
get to it?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To