Pattern p contains duplicate variable x
A pattern is not allowed to contain the same variable
more than once. For example, the following definition is not allowed,
because the pattern (x,x) contains two occurrences of the variable x.
f :: N*N -> N
f(x,x) = 3
f(x,y) = 7
If you want to define a function which returns 3 whenever its two
arguments are equal, and 7 otherwise, you could define it like
this, using a case expression
f :: N*N -> N
f(x,y) = {? 3 if x == y, 7 otherwise ?}