On Apr 29, 2009, at 12:18 AM, Luke Palmer wrote:

On Tue, Apr 28, 2009 at 4:09 PM, Vasili I. Galchin <[email protected] > 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.

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to