Yes, I agree with you.  In trying to attend to one thing at a time, I copied the use of "undefined" from the original poster's code.   Certainly, it makes it easier to debug code if you can have a Show instance that doesn't throw an error!
____________________
David Place   
Owner, Panpipes Ho! LLC

On Jul 20, 2011, at 8:35 AM, Antoine Latter wrote:

I would expect I would run into trouble with this approach - when a function receives one of these records as an argument, how does it know if it is safe to acces the record fields in question?

I would prefer using Maybe types, different types altogether for summed contracts, or imaking a Contract a type with two cases (as suggested earlier).