undocumented record behaviour
The following code is valid apparently:
module test
:: T = {a :: Int, b :: Bool}
Start =
let /*a = 42*/
b = True
in ({T | a, b}, {T | b, a})
a = 42
Is this a bug in the compiler or a missing feature in the language report (section 5.2).