From c6d41dad1ab4cb9b637c8c70fc33dee0b840eebd Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Sat, 28 Mar 2020 10:32:24 +0100 Subject: [PATCH] Add elixir lambda --- src/SUMMARY.md | 1 + src/dev/elixir/lambda.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/dev/elixir/lambda.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 85c7298..bf33565 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -7,6 +7,7 @@ - [Golang](./dev/golang/main.md) - [Testing](./dev/golang/testing.md) - [Elixir](./dev/elixir/main.md) + - [Lambda](./dev/elixir/lambda.md) - [GenServer](./dev/elixir/genserver.md) - [Dates](./dev/elixir/dates.md) - [Rust](./dev/rust/main.md) diff --git a/src/dev/elixir/lambda.md b/src/dev/elixir/lambda.md new file mode 100644 index 0000000..b62aba1 --- /dev/null +++ b/src/dev/elixir/lambda.md @@ -0,0 +1,32 @@ +# Lamba or Anonymous Functions + +## Create an anonymous function and bind it to a variable + +### Simple one + +```elixir +iex> func = fn -> IO.puts("Hello") end +#Function<21.126501267/0 in :erl_eval.expr/5> +iex> func.() +Hello +:ok +``` + +### One with arguments + +```elixir +iex> func = fn t -> IO.puts(t) end +#Function<7.126501267/1 in :erl_eval.expr/5> +iex> func.("Hello") +Hello +:ok +``` + +Another solution is the `&` operator used as syntastic sugar + +```elixir +iex> func = &(&1 + &2) +&:erlang.+/2 +iex> func.(2, 2) +4 +```