> I think that Elm has divide by zero exceptions?
Elm numbers are JavaScript numbers, so divide by zero returns NaN, it doesn't crash.
Although there are other instances that definetly can crash your program, Elm code doesn't allow you to throw or catch exceptions as a language feature.
> My main worry about pure functional languages is that you are at the mercy of the compiler for optimization
It's a scale. There are many ways to optimize outside of using mutation, and allowing for imperative code does prevent certain kinds of optimizations. In general though, the trade off with a language like Gren is that you value correctness and readability more than performance. For me, for the sort of projects I work on, I've never hit an unsolvable performance problem with a pure language. Your milage may vary.