[Haskell-cafe] Template Haskell question

Finn Teegen fte at informatik.uni-kiel.de
Tue Apr 27 14:38:33 UTC 2021

I have tried the examples as well and, indeed, I get a shadowing warning
for the first example (along with an unused warning).

ghci> :set -XTemplateHaskell -Wall
ghci> let f x $([p| x |]) = x in f 1 2
warning: This binding for 'x' shadows...
warning: Defined but not used: 'x'

However, for the second example I only get the unused warning.

ghci> let f $([p| x |]) x = x in f 1 2
warning: Defined but not used: 'x'

This still seems to be a bit inconsistent (not mentioning that I would
also expect both examples to fail because of non-linear occurrences of 'x').


On 27/04/2021 16:28, Tom Ellis wrote:
> On Tue, Apr 27, 2021 at 04:06:27PM +0200, Kai-Oliver Prott wrote:
>> Moreover, it seems odd that the "x" on the right side always
>> refers to the rightmost pattern variable "x" (regardless if
>> quoted or not).
> I guess this comes from the translation
> f x x = <rhs>
> ->
> f = \x -> \x -> <rhs>
> I'm not familiar enough with TH to say whether one should expect a
> warning though.
> Tom
> _______________________________________________
> 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.

More information about the Haskell-Cafe mailing list