May 2018
Intermediate to advanced
412 pages
9h 3m
English
Here’s some strange code:
| | iex> fun1 = fn -> fn -> "Hello" end end |
| | #Function<12.17052888 in :erl_eval.expr/5> |
| | iex> fun1.() |
| | #Function<12.17052888 in :erl_eval.expr/5> |
| | iex> fun1.().() |
| | "Hello" |
The strange thing is the first line. It’s hard to read, so let’s spread it out.
| | fun1 = fn -> |
| | fn -> |
| | "Hello" |
| | end |
| | end |
The variable fun1 is bound to a function. That function takes no parameters, and its body is a second function definition. That second function also takes no parameters, and it evaluates the string "Hello".
When we call the outer function (using fun1.()), it returns the inner function. When we call that (fun1.().()) the inner function is evaluated and “Hello” is returned. ...
Read now
Unlock full access