JavaScript has the same behavior as well:
["a", "b", "X"].sort(); // ["X", "a", "b"]
Internally the Ascii values are being compared, which you can check in iex:
iex(15)> 'X'
[88]
iex(16)> 'a'
[97]
iex(17)> 'x'
[120]
So, always convert to lowercase before comparing, to avoid running into edge cases.
For instance, see UpperCase win:
iex(22)> ["derpycoder", "Derpycoder", "DerpyCoder"] |> Enum.sort()
["DerpyCoder", "Derpycoder", "derpycoder"]
See the answer by @sbuttgereit.






















