elixir-lang/elixir-lang.github.com — pull request #240 by ericmj (2014-04-29 08:36:19+00:00)
Title: Function clause without body => function head

Calling it a function clause implies that a single function head `def foo(arg)` or `def foo(arg \\ default)` will be matched with the other clauses of the same arity when in fact it won't. That it creates a function clause with lesser arity when declaring defaults is an implementation detail.

If you agree with this I will also update the error message " ...has default values and multiple clauses, use a separate clause for declaring defaults". The suggested solution is very confusing.