
Hi Russell O'Connor wrote:
Samuel Bronson
writes: On 10/24/06, Russell O'Connor
wrote: Why have a function body at all? Shouldn't the type signature be sufficent?
Hmmm
Remember that type signatures need not be adjacent to function definitions. Now ponder what would happen if you forgot to define a function. Have a clue why it isn't sufficient now?
If you turn on -Wall in GHC, you would get a warning that your pattern coverage is incomplete. We should make it so that if the pattern coverage is incomplete and there is no function body, then that is an error.
So, taking Void to be the colour of the empty bikeshed and avoid :: Void -> x suppose I define data WrapVoid = Wrap Void may I now write boo :: WrapVoid -> x with no equations? Does this cover? Or does it neglect the crucial boo (Wrap _|_) case? What about hoo :: Void -> Bool -> x ? Does this cover, or did I forget hoo v True and hoo v False? Funny business, coverage checking. With GADTs, things become even more entertaining... All the best Conor