Step 1: Define a function
add_one
in a module named test
.
Step 2: Start the erlang shell and try to use this function.
As you can see I have tried three different combinations. Line #3 shows a call to the higher order function
lists:map
passing in the qualified name of the add_one
function as first argument. The shell throws an error.
In Line #4 I wrap
test:add_one
inside a fun
and it works.
In Line #5 I replicate the code of
add_one
inside an anonymous fun
and everything works fine.
Contrast this with say, Python.
Definition:
Usage:
Now I'll repeat the question: Does Erlang allow you to pass functions (not "funs" or anonymous functions) as arguments to higher order functions? Or am I missing something?
Please share your thoughts in the comments.
Update #1:
Got an answer. There is a way to do it. It still involves using the
fun
keyword.
Update #2:
Got another answer which does *not* use
fun
. The syntax is just a little different. Thanks to Justin Sheehy.