Elixirの利用者の一人の意見です
Elixirの関数の定義は、関数型言語らしい特徴があります。
数学での関数の定義は、xの範囲に応じて定義する表記ができます。
f(x) = \left\{ \begin{array}{l}
\displaystyle x ( x >= 0 ) \\
0 ( x < 0 )
\end{array} \right.
Pythonでこの関数を書いてみると
def f(x) do
if x >= 0:
return x
else:
return 0
一つの関数の中で場合分けする記述でしか書けません。
Elixirの場合
def f(x) when x >= 0, do: x
def f(x) when x < 0, do: 0
美しい!
実に美しい!