It's effectively the exact same thing as your example but with the default record put into a typeclass for convenience. Refactoring your original post: data Contract = Contract { currency :: Currency , payments :: Double , contracts :: [Contract] } deriving (Show) instance Default Contract where def = Contract { currency = undefined, payments = undefined, contracts = [] } one :: Currency -> Contract one c = def { currency = c, payments = 1} and :: Contract -> Contract -> Contract (and) c1 c2 = def { contracts = [c1, c2] } It's a very simple package and provides some default instances for your convenience. Use it if you like. On Mon, Jul 18, 2011 at 3:47 PM, David Place <d@vidplace.com> wrote:
Thanks for the pointer to Data.Default. I don't see how it applies in this case, though. The goal is to avoid mentioning the defaulted fields when constructing a record instance. Example?
____________________ David Place Owner, Panpipes Ho! LLC http://panpipesho.com d@vidplace.com
On Jul 18, 2011, at 1:45 AM, Christopher Done wrote:
On 18 July 2011 00:18, David Place <d@vidplace.com> wrote:
The way I often do this is to create an "ur" instance where all the fields have default values. Then to create an instance, I just do a "record update" of this instance.
For this there is Data.Default in data-default:
http://hackage.haskell.org/packages/archive/data-default/0.2.0.1/doc/html/Da...
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- Regards, Austin