
Hi Ashley Yakeley wrote:
Taral wrote:
I see nothing wrong with "case x of {}", with required braces. The layout rule never generates empty braces.
Also consider a simple "case x",
[..]
This will be useful for GADTs:
data MyGADT a where IntGADT :: MyGADT Int
never :: MyGADT Char -> t never x = case x -- no bottom needed
I like it, but I might like it even more if there was a little more noise (1) to distinguish this syntax from a lapse of concentration (2) to indicate that the construct is (morally) strict, well-defined because x is undefined; remember, case undefined { _ -> () } is (). I don't like "case x of {}", because it's just another way of saying "undefined", ie "x might have cases but we're not going to handle any of them". If there was some total variant, "cover" of case whose coverage was enforced, I'd be happy with "cover x of {}". How about "case ! x" ? Or not Conor