Elixir has a really cool syntax for writing anonymous functions (unnamed functions). It goes like this:
# The '&' operator is used to define the function and its arguments putter = &(IO.puts &1) putter.("Today I learned") #...> Today I learned #...> :ok
&1 refers to the functions first argument; in this example, we used “Today I learned". You can use more arguments with
&3, etc… For example:
combiner = &(&1 <> &2) combiner.("Foo", "Bar") #...> "FooBar"
Also notice that we are not calling either of these functions like
function(arg1, arg2), instead we are calling them like
function.(arg1, arg2). We have to use
. because we are not actually naming these functions, we are only assigning them a reference, hence “anonymous" functions.