My thoughts: If you're dealing with Maybes from List.head and List.tail, you should be doing pattern matching on [] and x::xs instead.
Working with Maybes doesn't have to be done painfully. You can get a lot of leverage with Maybe.map and similar functions. This allows you to write code *as if everything went fine* and then throw a Maybe.withDefault on the end. This works well thanks to Elm's convention of data structures at the end and |> pipes (which have no runtime cost compared to parentheses, btw). You can build up chains of callbacks similar to with promises. Maybe is not an exception, as has been pointed out. *Maybe is a data structure.* It just so happens that it's a data structure that can hold at most one element. Luke has written an article on Maybe here <https://github.com/elm-guides/elm-for-js/blob/8de9d96e10f78535bd78294c20b7b75cd7c220cf/Where%20Did%20Null%20And%20Undefined%20Go.md> . OP seems to think that bubbled exceptions are a good thing. I disagree. Bubbling exceptions are like goto, except you don't specify where to go! Instead you let anyone above you intercept the error. Or, you expect someone above you to catch the error, and if no one does that well keput. Just today I put try/except blocks around Python code that sometimes throws an exception if the network is being flaky. Not everyone likes every programming language and you're entitled to your opinion. A lot of what draws people to Elm is the lack of ambiguity: it's very predictable, no anthropomorphic objects that you have to expect to do something sensible, no magic configuration, no "it works and I have no idea why, and therefore no idea how to fix it when it breaks". If we've been able to persuade you, great. Otherwise, agree to disagree. -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.