[MLton] A variation of functional record update notation
   
    Vesa Karvonen
     
    vesa.karvonen@cs.helsinki.fi
       
    Mon,  8 Aug 2005 19:34:56 +0300
    
    
  
Quoting Matthew Fluet <fluet@cs.cornell.edu>:
> > Above, `set' refers to the update function. The syntax is fairly readable
> > even when the update function is referred to by a longvid:
> > 
> >    record >| R.set#field1 value1
> >           >| R.set#field2 value2
> >           ...
> >           >| R.set#fieldN valueN
> > 
> > This way there is no need to define a separate infix operator for functional
> > record update.
> 
> Perhaps more importantly, one would need a separate infix operator for
> each record type.  You still need a separate R.set function for each
> record type, but the infix pipe operator stays the same.
Yes, that is a good point.
Do you think that it would make sense to provide a simple script (maybe Emacs
lisp) to generate a signature/structure (say RECORDS/Records) of makeSetter
-functions (upto desired N) and change the FRU-page to use the piping notation?
I'm biased, of course, but the piping notation seems to considerably
increase the utility of the FRU technique. I have previously not used the
FRU technique due to the inconvenience of the fixity declarations, but I
can imagine using this notation (as I already have >| at top-level in my
utility libraries).
-Vesa Karvonen