Defined by name and # of args(arity) hello/1 vs hello/2
Instead of early exits/for invalid args use guards and param pattern matching
Named Fts must be defined inside module, anon fts can be defined anywhere
Named Fts
defmodule M do
def transform(myvar, _opts) do #_ means ignore arg
8 * myvar + 3 #returns last value automatically
end
#defp for private fts
defp privateTransform(v, z \\ 1) do #default value
v * 4 + z
end
def getcookie(%{cookie: c} = conn, _params) do
IO.inspect(conn)
IO.puts("Has cookie #{c}")
end
def getcookie(conn, _params) do
IO.puts("No cookie")
end
end
Recursion
def factorial(num) do
if num <= 1 do
1
else
result = num * factorial(num - 1)
result
end
end