I find if I'm using parentheses to group (non-numeric) expressions in Haskell then I should probably break up the expression and name the parts.
One wonderful thing about Haskell is that there isn't a cost to using let expressions, even if some of the values will never be used. Laziness means I can freely decompose my complex expressions into clearly named components and not worry about doing unnecessary computation.