putting left equation sides in parantheses causes GHC.Prim.Any specialization
I put this code into a file:
identity : a -> a
(identity) = id
I get this error message:
Inferred type is less polymorphic than expected
Quantified type variable `a' escapes
In the expression: id
In a pattern binding: (identity) = id
This may be correct, I don’t know.
However, I can also do this:
(identity) = id
GHCi accepts this. If I enter :type identity
into GHCi, I get this:
identity :: GHC.Prim.Any -> GHC.Prim.Any
This seems weird, in my opinion.
This is also accepted by GHCi:
(identity) = id
hello = identity "hello"
Evaluating hello
yields "hello"
, and :type identity
yields this:
identity :: [Char] -> [Char]
Trac metadata
Trac field | Value |
---|---|
Version | 6.12.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |