How Haskell Changes the Way You Think

Reading the Haskell book leads to weird tangential insights. For example, in some instances, it might be better to add negative numbers in your app rather than subtracting positive ones because addition is commutative and subtraction isn't.

If your computation had to be split across multiple boxen or cores, those sub-computations could evaluate out of order without issue as long as the combination operation is both commutative and associative. This makes sense when you think about it, but years of writing synchronous imperative code made me never have to actually think about it.

This is what people mean when they say that learning Haskell changes the way you think and code. Imagine a lot of little insights like that chained together throughout the learning process.