
ghc should be able to deduce correct use of partial functions and not give a warning in such cases, e.g. in 9.8.2
if null ys then [] else [(xs,tail ys)])
gets a warning
warning: [GHC-63394] [-Wx-partial]
but it is clear that this use of tail will never be a problem so IMHO that line of code should not get a warning.
Does anybody know if there is a plan or enhancement request to eliminate such warnings?
Cheers George
The problem is that both partiality checks and checks for incomplete pattern matches are undecidable in general, that is, without assistance the compiler can not infer partiality without risking infinite loops. Checks for incomplete pattern matches could be decidable, if it was not for view patterns, where you can hide arbitrary function applications (think unsafePerformIO) in. Currently GHC plays the safe card, see this thread: https://mail.haskell.org/pipermail/haskell-cafe/2024-January/136545.html With the help of special annotation such as Liquid Haskell you might be able to teach the compiler that your use of partial functions is fine. https://ucsd-progsys.github.io/liquidhaskell/ However, I second Henning in that a -Wx-partial warning hints at the necessity of a code re-factoring. Olaf