Wouldn't it be nice if Timex.compare/2 were compatible with Enum.sort?
- Dominant language
- Elixir
- Stars
- 1.8k
- Forks
- 407
- PR merge metrics
- No merged PRs in 30d
Description
I would have expected to be able to sort the result of `Timex.parse!/2` by using the `Timex.compare/2` function, so I don't have to worry about whether I'm dealing with a `Date` or a `NaiveDateTime`.
```
iex> ["2020-01-06", "2020-01-05", "2019-12-31"]
|> Enum.map(& Timex.parse!(&1, "{ISOdate}"))
|> Enum.sort(Timex)
[~N[2020-01-06 00:00:00], ~N[2020-01-05 00:00:00], ~N[2019-12-31 00:00:00]] <-- not the right order 😢
```
Expected:
```
[~N[2019-12-31 00:00:00], ~N[2020-01-05 00:00:00], ~N[2020-01-06 00:00:00]]
```
Of course, this happens because `Timex.compare/2` returns `-1, 0, 1` as opposed to `:lt, :eg, :gt` as needed by [Enum.sort/2](https://hexdocs.pm/elixir/Enum.html#sort/2).
Any thoughts on this?
Thanks!
Contributor guide
Assessment
This issue has not been assessed yet.