
The point I have tried to convey was that:
- the ))) ( patterns are hard to parse visually - the $ helps to alleviate that
..which is fairly orthogonal to common subexpression elimination or formatting.
$ allows one to write more complex expressions -- precisely without resorting to diluting code with formatting.
I agree, but '$' still needs to be used with a bit of care. For instance, given these choices:
someFn $ someOtherFn $ more $ more $ val (someFn . someOtherFn . more . more $ val) someFn (someOtherFn (more (more val)))
I like one not on the list: someFn . someOtherFn . more $ more val as it's simpler in that there are fewer things to parse than the other options. The middle option in the first three without the extra global '()'s is close, and might even be better in context once they are removed, but the last one makes me long for he old LISP super-parens, even though I thought and still think they were a bad idea. So my rule of thumb is one '$' for expression or sub-expression, using '.' instead of '$' prior to that to make the distinction between building a functional value and applying it stand out.