s7r

s7r

What does the console output represent, after defining an anonymous function?

I am trying to understand the output that is returned by the console when I define an anonymous function. I haven’t been able to find any answer in this forum yet.

Example:
iex(33)> fn x, y → x + y end
function<13.126501267/2 in :erl_eval.expr/5>

  • What is the meaning of the double 13.126501267 ?

Most Liked

easco

easco

If you look in the Elixir code, in the “inspect” module, you can see that the output is derived from calling Function.info. Calling Function.info on an anonymous function on my machine gives me:

iex(5)> some_function = fn x -> x * x end
#Function<7.126501267/1 in :erl_eval.expr/5>
iex(6)> Function.info(some_function)
[
  pid: #PID<0.109.0>,
  module: :erl_eval,
  new_index: 7,
  new_uniq: <<241, 72, 50, 109, 70, 84, 198, 45, 20, 94, 42, 25, 184, 243, 5,
    100>>,
  index: 7,
  uniq: 126501267,
  name: :"-expr/5-fun-4-",
  arity: 1,
  env: [
    {[], :none, :none,
     [
       {:clause, 5, [{:var, 5, :_x@1}], [],
        [{:op, 5, :*, {:var, 5, :_x@1}, {:var, 5, :_x@1}}]}
     ]}
  ],
  type: :local
]

So you can see that the inspect value for the function #Function<7.126501267/1 in :erl_eval.expr/5> consists of the function’s index, uniq and arity pieces.

According to the documentation on Function.info:

:index - (integer) an index into the module function table.

:uniq - (integer) a unique value for this function. This integer is
    calculated from the compiled code for the entire module.

:arity - (integer) the number of arguments the function is to be called
    with.

Now… having figured all that out, it’s still the case that there’s not much the average user can do with that information (well… the arity is useful metadata) - most folks can treat it as a blob of stuff that uniquely identifies the function.

NobbZ

NobbZ

It’s not double. The dot is just a separator. Similar to as in a PID individual segments have their own meaning, but which is not documented nor necessary to know.

NobbZ

NobbZ

What do you mean by “double”? Anyway, there is no meaning in that number. It is opaque., though the /2 indicates arity of the anonymous function.

Where Next?

Popular in Chat/Questions Top

rafaellcustodio
Hi sasajuric, any chance of a fresh promo code? :sunglasses:
New
Fl4m3Ph03n1x
Background I am trying to do the typical Ceaser cypher exercise in Elixir. The description of the exercise is as follows: Create an impl...
New
Nvim
Anybody know of a Pragmatic Studio 40% off coupon code for video course like Phoenix?
New
woohaaha
I’m coming from Ruby and Rails. I have read some Elixir and Phoenix books. They shed a lot of light about building applications in Elixir...
New
wolfiton
Question: Can someone recommend me some good resources on learning performance for phoenix elixir applications and a design pattern I sh...
New
koen_vb
Hi, I was looking for a pointer of how I could most easily start with phoenix regarding deploying it to something like linode or google c...
New
ca1989
Hi all, is there any up to date resource out there (blog, talk, video, book…) about deploying elixir applications using releases? In pa...
New

Other popular topics Top

jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 49266 226
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

We're in Beta

About us Mission Statement