Elixir では、関数を返す関数を書くことができる。しかも、返ってくる関数はそれが定義された元の環境を覚えている。つまりクロージャだ。
というわけで、練習問題をやってみよう。
iex(1)> prefix = fn a -> (fn b -> a <> " " <> b end) end #Function<6.52032458/1 in :erl_eval.expr/5> iex(2)> mrs = prefix.("Mrs") #Function<6.52032458/1 in :erl_eval.expr/5> iex(3)> mrs.("Smith") "Mrs Smith" iex(4)> prefix.("Elixir").("Rocks") "Elixir Rocks"