Error Messages!!!!!
I am loving the error messages in Elm! It’s like having a second layer of testing to help keep you on the right path. I’ve never experienced another language with such verbose and helpful messages.
When learning a new language, it is very helpful when you don’t have to fight to figure out what went wrong when your program doesn’t compile. More than a few times with python I wanted to throw the computer when it would tell me the number of arguments was incorrect(usually I because I forgot self) but would be unclear if I had too many or too few. Elm on the other hand, actually speaks to you like an adult, and tries to help you in the right direction.
Detected errors in 1 module.
==================================== ERRORS ====================================
— TYPE MISMATCH — — — — — — — — — — — — — — — — — — — — — — — — ./src/Board.elm
The type annotation for `update` does not match its definition.
20│ update : List Cell -> Player -> List Cell
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The type annotation is saying:
List Cell -> Player -> List Cell
But I am inferring that the definition has this type:
List Cell -> Int -> Player -> List Cell
Here I know exactly what is missing and what the function was expecting to see. It’s almost as if the language wants you to succeed!
And even when you do something silly, like set yourself up with a circular dependency, Elm’s not going to be a jerk, it’s just going to politely remind you to think about your design.

Thanks Elm!