Ticket #1579 (new proposed-project)

Opened 4 years ago

Last modified 14 months ago

Implement overlap and exhaustiveness checking for pattern matching

Reported by: euschn Owned by:
Priority: good Keywords:
Cc: Topic: misc
Difficulty: unknown Mentor: not-accepted

Description (last modified by bross279) (diff)

GHC's current checker for overlaps and exhaustiveness patterns is in need of an overhaul. There are several bugs and missing features. For example, GADTs are not taken into account.

The project would involve the analysis of the current implementation, specification of bugs and desired features, design and implementation of an improved checker.

The project is mentioned on:

 http://hackage.haskell.org/trac/ghc/wiki/ProjectSuggestions

 http://hackage.haskell.org/trac/ghc/ticket/595

Interested Mentors

Interested Students

  • Eugen Jiresch ( e0204097(_atsign_)student.tuwien.ac.at )
  • Saurabh Kumar ( saurabh.catch@… )
  • Ben Ross (benjross@…)

Change History

Changed 3 years ago by dons

  • priority changed from not yet rated to good

Changed 2 years ago by tibbe

Note that this is quite a hard project. We've had quite a few failed projects of this nature (e.g. serious compiler/research work) in the past. I'd only think this is a good idea if the student has a good grasp of what needs doing already and is familiar with GHC internals.

Changed 2 years ago by SamAnklesaria

Although the checker may need an overhaul, what bugs specifically does the current implementation produce? With the exception of  #322, the only related GHC tickets I can find are  #1307 and  #2204, which aren't about bugs, but improving error messages. Which features specifically is the current checker lacking? The description mentions GADTs, but these seem to already have been taken into account, as  ticket #366 is closed.

Changed 2 years ago by saurabhcatch

  • description modified (diff)

Changed 14 months ago by carette

I might be interested in supervising this.

Changed 14 months ago by bross279

  • description modified (diff)
Note: See TracTickets for help on using tickets.