我尝试编译此代码:
import Data.Typeable
import Distribution.Package
name :: PackageName
name = PackageName "Foo"
main = do
print $ typeOf name
但是这个错误就失败了:
No instance for (Typeable PackageName)
arising from a use of `typeOf'
Possible fix:
add an instance declaration for (Typeable PackageName)
In the second argument of `($)', namely `typeOf name'
In a stmt of a 'do' block: print $ typeOf name
In the expression: do { print $ typeOf name }
但是,Cabal的文档和源代码都说PackageName有一个Typeable的派生实例。我错过了什么?
ghc版本:7.6.3
cabal版本:1.16.0
答案 0 :(得分:1)
Cabal-1.16.0.1的文档实际上显示没有instance Typeable PackageName
。文档指出此实例首次出现在1.18.0版本中,因此您应该安装晚于该版本的版本(最好是最新版本)。 (请注意,cabal-install
和Haskell包Cabal
不是一回事,而cabal-install
是一个独立的程序,不依赖于包Cabal
)。