Function.info
info, go back to Function module for more information.
Specs
info((... -> any())) :: [{information(), term()}]
Returns a keyword list with information about a function.
The returned keys (with the corresponding possible values) for all types of functions (local and external) are the following:
:type-:local(for anonymous functions) or:external(for named functions).:module- an atom which is the module where the function is defined when anonymous or the module which the function refers to when it's a named function.:arity- (integer) the number of arguments the function is to be called with.:name- (atom) the name of the function.:env- a list of the environment or free variables. For named functions, the returned list is always empty.
When fun is an anonymous function (that is, the type is :local), the following
additional keys are returned:
:pid- PID of the process that originally created the function.:index- (integer) an index into the module function table.:new_index- (integer) an index into the module function table.:new_uniq- (binary) a unique value for this function. It's calculated from the compiled code for the entire module.:uniq- (integer) a unique value for this function. This integer is calculated from the compiled code for the entire module.
Note: this function must be used only for debugging purposes.
Inlined by the compiler.
Examples
iex> fun = fn x -> x end
iex> info = Function.info(fun)
iex> Keyword.get(info, :arity)
1
iex> Keyword.get(info, :type)
:local
iex> fun = &String.length/1
iex> info = Function.info(fun)
iex> Keyword.get(info, :type)
:external
iex> Keyword.get(info, :name)
:length
Specs
info((... -> any()), item) :: {item, term()} when item: information()
Returns a specific information about the function.
The returned information is a two-element tuple in the shape of
{info, value}.
For any function, the information asked for can be any of the atoms
:module, :name, :arity, :env, or :type.
For anonymous functions, there is also information about any of the
atoms :index, :new_index, :new_uniq, :uniq, and :pid.
For a named function, the value of any of these items is always the
atom :undefined.
For more information on each of the possible returned values, see
info/1.
Inlined by the compiler.
Examples
iex> f = fn x -> x end
iex> Function.info(f, :arity)
{:arity, 1}
iex> Function.info(f, :type)
{:type, :local}
iex> fun = &String.length/1
iex> Function.info(fun, :name)
{:name, :length}
iex> Function.info(fun, :pid)
{:pid, :undefined}