"def" without "do"

It also helps the compiler when you have multiple definitions with default values. For example

    def foo(fn,acc)

    def foo(:ok, acc \\ []) do
         :ok 
    end

    def foo(:error, acc \\ nil) do
        :error
    end

Try it without the bodyless clause and it should display a warning. (It should, but I’m on mobile so I can’t be sure).

I don’t know exactly why, I just discovered it a few days ago.