Re: ghc should be able to deduce correct use of partial functions and not give a warning in such cases

Olaf Klinke <[email protected]>
Newsgroups gmane.comp.lang.haskell.cafe
Message-ID <[email protected]>
> 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

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.