Unused type variables with non-linear patterns

Simon Peyton Jones simonpj at microsoft.com
Tue Dec 15 16:02:28 UTC 2015


I agree too.

Is there a ticket?   Does it emit a warning right now?

Simon

From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Richard Eisenberg
Sent: 11 December 2015 16:02
To: Michael Sloan <mgsloan at gmail.com>
Cc: ghc-devs at haskell.org
Subject: Re: Unused type variables with non-linear patterns

I agree with Michael. This should not emit a warning.

While you're in this area, make sure that

> type instance F _ _ = Int

indeed matches `F Char Bool`. It's easy to imagine both underscores being treated as the same variable, which is not what the user intends.

Thanks,
Richard

On Dec 10, 2015, at 4:32 PM, Michael Sloan <mgsloan at gmail.com<mailto:mgsloan at gmail.com>> wrote:


I definitely think this should be considered a usage.  Ideally, you should always be able to resolve warnings, but there'd be no straightforward way to do so if LHS-only usages cause warnings.  Also, It's quite useful to use type variables only on the LHS.  Usage example: https://hackage.haskell.org/package/base-4.8.1.0/docs/src/Data.Type.Equality.html#EqStar<https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fhackage.haskell.org%2fpackage%2fbase-4.8.1.0%2fdocs%2fsrc%2fData.Type.Equality.html%23EqStar&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7c65bff682e66a434f1f1708d302447d3f%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=gkgghrbPZ7shUtk4z2WesVVJaQD8wlKhlbXWmFHpjEs%3d>

-Michael

On Thu, Dec 10, 2015 at 6:48 AM, Jan Stolarek <jan.stolarek at p.lodz.pl<mailto:jan.stolarek at p.lodz.pl>> wrote:
An intersting thing came up when implementing warnings for unused type variables in type family
patterns (#10982 / D1576):

type family X a b where
  X a a = Int

Should we emit a warning that `a` is unused? It does not appear in the RHS but it is actually used
because of non-linear pattern. We can fix this by prefixing both appearances of `a` with an
underscore - this silences the warning and maintains semantics. Nevertheless, if a variable is
unused it should be perfectly valid to replace it with an underscore - that is not the case in
this example. Thoughts?

Janek

---
Politechnika Łódzka
Lodz University of Technology

Treść tej wiadomości zawiera informacje przeznaczone tylko dla adresata.
Jeżeli nie jesteście Państwo jej adresatem, bądź otrzymaliście ją przez pomyłkę
prosimy o powiadomienie o tym nadawcy oraz trwałe jej usunięcie.

This email contains information intended solely for the use of the individual to whom it is addressed.
If you are not the intended recipient or if you have received this message in error,
please notify the sender and delete it from your system.
_______________________________________________
ghc-devs mailing list
ghc-devs at haskell.org<mailto:ghc-devs at haskell.org>
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.haskell.org%2fcgi-bin%2fmailman%2flistinfo%2fghc-devs&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7c65bff682e66a434f1f1708d302447d3f%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=HZKgQKaUHcWjhAQNgfwXyK55SzqAgqhVevgpQRbyz5c%3d>

_______________________________________________
ghc-devs mailing list
ghc-devs at haskell.org<mailto:ghc-devs at haskell.org>
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151215/19c933f5/attachment-0001.html>


More information about the ghc-devs mailing list