6.5.1. Traditional record syntax — Glasgow Haskell Compiler 9.2.7 User's Guide

# 6.5.1. Traditional record syntax

`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.