data Type = Type { field1 :: Type1, field2 :: Type2 }
But, omitting the irrelevant fields from the initializer causes a big "Fields not initialised" warning.
So, I figured that, instead of writing out
Type { field1 = value, field2 = undefined }
which was verbose, or
Type { field1 = value }
which resulted in the big warning, I could use
undefined { field1 = value }
which did eliminate the warning.
However,
field1 (undefined { field1 = value })
resulted in an exception. I had expected it to be equivalent to
field1 (Type { field1 = value, field2 = field2 undefined })
but it's not. Since types can have multiple constructors, it's actually equivalent to
field1 (case undefined of { Type { field2 = field2 } -> Type { field1 = value, field2 = field2 })
according to section 3.16.3 in the Haskell report.