Why are there different naming styles?

Traditionally, Erlang uses is_xxx for functions which return a boolean value. In particular, functions which can be used in guards, of which many are indeed is_xxx functions, were taken wholesale into Elixir from Erlang. Currently, in Elixir, the is_xxx format serves as an indicator that a function / method can be used inside a guard. Since Integer.is_odd/1 is a macro which can be placed into a guard, it also follows this convention. Most other Elixir functions which return a boolean value, such as Enum.empty?/1 cannot be placed in guards, and follow the normal Elixir xxx? naming convention.