Can I ask what is your use-case, and whether you've done this in some other
language? From a quick google there are appear to be some (possibly
non-standard) C and C++ compiler defines that provide the current function
name, but other than that:

- Python rejected a PEP for this feature (
https://www.python.org/dev/peps/pep-3130/)
- Java does not support it in a first-class way ("could use stacktrace, but
potentially unreliable")
- some lisps appear to have interactive mode support for this kind of
introspection, but nothing general.

The recommended way to solve problems that require this level of
introspection is to do code generation via metaprogramming.


On Wed, Aug 5, 2015 at 12:36 PM, Isaiah Norton <[email protected]>
wrote:

> No.
>
> Ok, technically, you could do this (inspired by
> https://github.com/JuliaLang/julia/issues/8066#issuecomment-61136584):
>
> julia> function foo()
>        bt = backtrace()
>        lookup = ccall(:jl_lookup_code_address, Any, (Ptr{Void}, Int32),
> bt[2], 0)
>        name = lookup[1]
>        end
> foo (generic function with 1 method)
>
> julia> foo()
> :foo
>
>
> But that is a really, really bad idea. Please don't do that.
>
> On Wed, Aug 5, 2015 at 12:04 PM, Dominique Orban <
> [email protected]> wrote:
>
>> Sorry if this has been asked before. Is it possible to determine the name
>> of a function inside that function? For example,
>>
>> function blah(x)
>>   my_name = ...  # should evaluate to "blah" or :blah
>> end
>>
>> I didn't see that in the introspection section of the documentation.
>>
>> Thanks!
>>
>
>

Reply via email to