I was wondering if there is syntactic sugar in Haskell for defining a default value for fields in a data type. For instance, say I have a type that is defined in record syntax:
type CustomerID = Int
type Address = Maybe String
data Customer = Customer {
customerID :: CustomerID
, customerName :: String
, customerAddress :: Address
} deriving (Show)
Is there any way to define default values for some (or all) fields such that they may be omitted from a declaration, and still have it generate a valid object?
e.g.)
a = Customer{customerID = 12, customerName="Bill"}
-- I would like a{customerAddress} to default to Nothing (for instance).
It seems to me that this would be a nice feature to have, if it does not exist. Am I missing something?