On Mar 7, 11 00:18, bearophile wrote:
Haskell is full of function calls, so the Haskell designers have used/invented 
several different ways to avoid some parenthesys in the code.

 From what I've seen if you remove some parenthesis well, in the right places, 
the resulting code is less noisy, more readable, and it has less chances to 
contain a bug (because syntax noise is a good place for bugs to hide).

One of the ways used to remove some parenthesys is a standard syntax that's 
optionally usable on any dyadic function (function with two arguments):

sum a b = a + b

sum 1 5 == 1 `sum` 5

The `name` syntax is just a different way to call a regular function with two 
arguments.

In Haskell there is also a way to assign an arbitrary precedence and 
associativity to such infix operators, but some Haskell programmers argue that 
too much syntax sugar gives troubles ( 
http://www.haskell.org/haskellwiki/Use_of_infix_operators ).

In D the back tick has a different meaning, and even if in D you use a 
different syntax, like just a $ prefix, I don't know how much good this syntax 
is for D:

int sum(int x, int y) { return x + y; }

int s = sum(1, sum(5, sum(6, sum(10, 30))));
Equals to (associativity of $ is fixed like this):
int s = 1 $sum 5 $sum 6 $sum 10 $sum 30;

So I think it's not worth adding to D.

Bye,
bearophile

If we had UFCS this could be written as,

    int s = 1.sum(5.sum(6.sum(10.sum(30))));

or, knowing sum is associative,

    int s = 1.sum(5).sum(6).sum(10).sum(30);

Reply via email to