Polymorphism, typed splices and type inference don't mix
Trying to quote and splice a polymorphic function doesn't work unless you have a type signature.
{-# LANGUAGE TemplateHaskell #-}
module A where
foo1 x = x
test_foo = [|| foo1 ||]
{-# LANGUAGE TemplateHaskell #-}
module B where
import A
qux = $$(test_foo)
The type of qux
is Any -> Any
! Which is clearly wrong.
Adding a type signature to qux
fixes the problem.
qux :: a -> a
qux = $$(test_foo)
Either there should be a better error or this should just work.
It seems that this has always been broken. Ryan tested on GHC 7.8.4 for me.
Trac metadata
Trac field | Value |
---|---|
Version | 8.4.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |