[MLton] associativity of &
   
    Stephen Weeks
     
    MLton@mlton.org
       
    Thu, 23 Mar 2006 15:51:34 -0800
    
    
  
In writing up the fold stuff, I wondered about the decision to make
the "&" of product types be infix left, rather than infix right.
  datatype ('a, 'b) prod = & of 'a * 'b
  infix  4 &
What was the reason behind that decision?  I think it might be better
to make "&" infix right.  By analogy with lists, in which :: is infix
right, it is easier to recur over products via a fold left if they
look like
  1 & (2 & (3 & (4 & ())))
rather than
  ((((1 & 2) & 3) & 4) & ())
I ran into a couple of cases where code using fold and products would
have been simplified had "&" been infix right.
With "&" infix right, constructing product via a fold left is slightly
trickier, because one has to construct a function that fills a "hole"
in the product, and apply that function at the very end.  But it's not
too bad.