
On Tue, Aug 21, 2012 at 09:34:49PM +0100, Carlos J. G. Duarte wrote:
Hi. Often I see the following pattern to build function "pipelines":
x = f1 . f2 $ fn arg
They use the "$" just before the last function call. I never got much into it: when to use the "." or the "$"? I think today I figured it out: => "." is a function composition operator: used to "merge" functions; => "$" is a function application operator: used to apply a function to its arguments.
If this reasoning is correct, I think the following should be a more adequate pattern:
x = f1 . f2 . fn $ arg
To merge/compose all functions first and apply the composed function to its parameter(s). Am I correct on this? Thx
Yes, you are absolutely correct. But sometimes people do something like f1 . f2 $ fn arg if for some reason they are thinking of "fn arg" as a "primitive" starting point, and then applying a pipeline of functions f2, f1 to that. But it is really just a different point of view. In any case, both (f1 . f2 . fn $ arg) and (f1 . f2 $ fn arg) are perfectly good style. Having more than one $, like (f1 $ f2 $ fn $ arg), is frowned upon. -Brent