Ответ 1
Вы можете использовать :erlang.fun_info/1
; он возвращает кучу информации о данной функции, включая ее arity:
iex> :erlang.fun_info(fn -> :ok end)[:arity]
0
iex> :erlang.fun_info(fn(_, _, _) -> :ok end)[:arity]
3
Как указано в документации, которую я связываю, эта функция в основном предназначена для целей отладки, но ее можно использовать для определения арности функции.