NoTraditionalRecordSyntax-
Since: 7.4.1 Disallow use of record syntax.
Traditional record syntax, such as C {f = x}, is enabled by default. To disable it, you can use the NoTraditionalRecordSyntax extension.
Under NoTraditionalRecordSyntax, it is not permitted to define a record datatype or use record syntax in an expression. For example, the following all require TraditionalRecordSyntax:
data T = MkT { foo :: Int } -- record datatype definition
x = MkT { foo = 3 } -- construction
y = x { foo = 3 } -- update
f (MkT { foo = i }) = i -- pattern matching
However, if a field selector function is in scope, it may be used normally. (This arises if a module using NoTraditionalRecordSyntax imports a module that defined a record with TraditionalRecordSyntax enabled). If you wish to suppress field selector functions, use the NoFieldSelectors extension.