
Hi Folks, Can fields in a record be made "optional"? Let me motivate my question: I have a data type called "Contract". It is a record. It has one field that holds a currency value, a second field that holds payments, and a third field to hold sub-Contracts. data Contract = Contract { currency :: Currency , payments :: Double , contracts :: [Contract] } deriving (Show) Here is a function that creates a Contract with currency c and payments = 1: one :: Currency -> Contract one c = Contract { currency = c, payments = 1, contracts = [] } Since there are no sub-Contracts I'd rather not specify that last field. Here is a function that AND's two Contracts, c1 and c2, and returns one Contract: and :: Contract -> Contract -> Contract (and) c1 c2 = Contract { currency = undefined, payments = undefined, contracts = [c1, c2] } I'd rather not specify those first two fields. See why I desire optional fields? Perhaps I am going about it completely wrong and there is a better way to express Contract? I am eager to learn! /Roger