Evan decides on what goes in the core libraries based on his understanding of the future of Elm and his taste on APIs (which is amazing btw). Much of the delightfulness of Elm is due to his careful consideration of the long term consequences of various decisions. This careful consideration is why Elm is also a lot more conservative than some people like it to be.
In the case of including some function into the core library, once it is there it cannot be taken out without breaking people’s code. One of the arguments against its inclusion is the fact that using it might mask improper data modeling. Consider the fact that the last commit to the
Maybe module is a note to warn about overuse of
Note: This can be overused! Many cases are better handled by a
expression. And if you end up using
withDefault a lot, it can be a good sign
that a [custom type][ct] will clean your code up quite a bit!
It is this kind of hints that guide people to better code.