
29 Mar
2009
29 Mar
'09
12:41 p.m.
Now suppose that foo3 :: [Int], and I want to prepend 5 to it. I end up having to write something like
let v1 = v0 {foo3 = 5 : (foo3 v0)}
There used to be a feature in pre-Haskell'98 called "named field puns", which allows to use a shorter form of field access. Your example would come out as f v0{foo3} = let v1 = v0 {foo3 = 5: foo3} in ... Have a look in the Haskell-1.4 Language Report to see how it works. The behaviour is still supported as an extension by Hugs (-98), nhc98 (-puns), and ghc (-XNamedFieldPuns). Regards, Malcolm