defmodule Funcs do def fib(n) when not is_number(n) or n < 0, do: raise("arg!") def fib(n), do: fib(0, 1, n) def fib(a, b, 0), do: a def fib(a, b, n), do: fib(b, a+b, n-1) end