[Haskell-cafe] default values in a record structure
Sebastiaan Visser
sfvisser at cs.uu.nl
Wed Apr 29 06:43:23 EDT 2009
On Apr 29, 2009, at 12:18 AM, Luke Palmer wrote:
> On Tue, Apr 28, 2009 at 4:09 PM, Vasili I. Galchin <vigalchin at gmail.com
> > wrote:
> Hello,
>
> Is there anyway when defining a dat type record struct to
> indicate default values for some of the fields?
>
> The usual pattern is to use a default record, and specialize it:
>
> data Foo = Foo { bar :: Int, baz :: Int, quux :: Int }
>
> fooDefault = Foo { bar = 1, baz = 2, quux = 3 }
>
> newRecord = fooDefault { quux = 42 }
>
> If you only want some of the fields to be defaulted, you can make
> them undefined in the default record... unfortunately this won't be
> checked by the compiler.
>
> Luke
Additionally, you can choose to not export the constructor Foo and to
only export your fooDefault quasi-constructor and your record selectors.
More information about the Haskell-Cafe
mailing list