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.

Reply via email to