Whatever the decision, it should be consistent among all Enum functions. `reduce/2` does not have to be a separate clause. Take a look at how Enum.find works:

```
iex(1)> h Enum.find
* def find(collection, ifnone // nil, fun)
iex(2)> Enum.find [], fn x -> x end
nil
iex(3)> Enum.find [], 0, fn x -> x end
0
```