1.7 how to read haskell expressions

If you've read math before, it's essentially the same, but with a little more rules. f x means applying a function f to a value x, reading from left to right. So, be careful if you're doing f x y, as this is essentially f(x) being applied to y, meaning f(x) returns a function.

There are a few exceptions for certain operators, because otherwise Haskell would suck. Consider +. We want to write x+y, not + x y. As for order of operations with this reframing, operators happen after function calls, meaning p q+r s is the same as p(q)+r(s), instead of p(q+r)(s). The other operator which this is useful for is composition :

f . g = (.) f g -- f(g) should return a function
(f . g) x = (.) f g x -- f(g(x))
f . g x = f . (g x) -- expects g(x) to be a function