Поскольку это пример упражнения / обучения, я предполагаю, что ожидаемый ответ будет функцией со многими предложениями:
defmodule M do
def add(num, acc \\ 0)
def add(num, _acc) when num > 99, do: raise("Invalid #{num}")
def add(num, acc) when num < 10, do: acc + num
def add(num, acc), do: add(rem(num, 10), acc + div(num, 10))
end
IO.puts M.add(35)
#⇒ 8
IO.puts M.add(5)
#⇒ 5
IO.puts M.add(88)
#⇒ 16
IO.puts M.add(101)
#⇒ ** (RuntimeError) Invalid 101
Это определенно огромный перебор для этой конкретной задачи, но подумайте, насколько просто сделать этот код для суммирования целых чисел, имеющих 3 числа (в отличие от любого другого нефункционального подхода).