
On 1/17/07, Max Vasin
Fields of the Book datatype which are not (Maybe a) are required to be present.
This doesn't actually answer your question, but if those fields are really required and you want to avoid the possibility of a "default" value sneaking into the program through a bug, you may prefer to use undefined instead of a non-bottom value for the required fields. That is, Book undefined undefined Nothing Nothing Nothing undefined undefined undefined (lots of typing, but if a bug slips in and you get a partially-defined book into the guts of the program, you'll die instead of silently using invalid data.)
class Empty e where empty :: e
But still I have to emplement instances by hand.
What would the strategy be here for automatically defining the instances? For example, what are the Empty instances for data Foo = Bar | Baz | Quux data Foo2 = Bar2 Int | Baz2 String | Quux2 (Maybe String)
Or may be it would be better to drop out Empty and use something else?
I see no inherent problem with Empty, just with the automated instantiation. Then again, I'd be tempted to wait to define Empty until I saw the second or third instance of its use. Colin