
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
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
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