| ... | ... | @@ -44,7 +44,14 @@ would match only the Bar constructor since it is the only one with a  y field. | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
This would mitigate the problems caused by accessors being partial functions since you can use a simple case statement to get the effect of an accesor that returns its result in a Maybe
 | 
| 
 | 
 | 
This would mitigate the problems caused by accessors being partial functions since you can use a simple case statement to get the effect of an accesor that returns its result in a Maybe.
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Note from Simon.  I hate that the above defn of 'f' has just one argument (val {x="foo")), 
 | 
| 
 | 
 | 
whereas it looks as if it has two.  (This is a problem with existing Haskell.)  It looks
 | 
| 
 | 
 | 
like 'f' has an argument 'val' and another arguement that is a free-standing record, 
 | 
| 
 | 
 | 
something we really want in the end anyhow.  Not sure how to fix this.  val@{x="foo")?
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
- first class update and setting syntax (more advanced, needs better syntax)
 | 
| ... | ... |  |