(Typeable PackageName)没有实例

时间:2014-08-21 13:42:13

标签: haskell cabal

我尝试编译此代码:

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

1 个答案:

答案 0 :(得分:1)

Cabal-1.16.0.1的文档实际上显示没有instance Typeable PackageName。文档指出此实例首次出现在1.18.0版本中,因此您应该安装晚于该版本的版本(最好是最新版本)。 (请注意,cabal-install和Haskell包Cabal不是一回事,而cabal-install是一个独立的程序,不依赖于包Cabal)。