Hi Gary, We've had requests like this before (Though I can't find it in http://haskell.systemsz.cs.yale.edu/hugs-bugs/) If anyone feels like adding this, I'll be happy to add it in. Here's how I think it can be done: 1) In an early phase of the compiler, add this line to the end of every case analysis/ pattern match: _ -> hugsError __FILE__ __LINE__ where hugsError is a new builtin function and __FILE__ and __LINE__ are replaced by appropriate strings and ints. 2) After expanding each pattern match, try to eliminate redundant patterns. For example, print a warning if you find: case e of [] -> e1 [] -> e2 or case e of [] -> e1 (:) x xs -> e2 _ -> e3 Suppress the warning if e3 is a call to hugsError Remember to watch for these special cases: case e of x | True -> e1 -- always executes x | otherwise -> e2 -- always executes ... 3) Print a warning message if and calls to hugsError remain at the end. > This isn't a bug in Hugs; it's a request for an enhancement. > > It would be very nice if hugs would statically check the definitions > in a module to see if all patterns for a type are covered. For example, if > the user wrote a function > > > sum_all :: [Int] -> Int > > sum_all (x:xs) = x + sum_all xs > > then hugs should warn the user that the pattern [] is not covered > by the definition. This warning might be toggled by a command line > switch if annoying. > > SML has this feature, at least in the implementations I've used (SML/NJ), > and it's very helpful for students. > > Gary Leavens > 229 Atanasoff Hall, Department of Computer Science > Iowa State Univ., Ames, Iowa 50011-1040 USA > [EMAIL PROTECTED] phone: +1 515 294-1580 fax: +1 515 294-0258 > URL: http://www.cs.iastate.edu/~leavens/homepage.html >
