Haskell 使用Cabal安装模块后未解析Typeclass实例
我创建了一个简单的项目来演示这个问题: 如果我使用“cabal install”编译并安装模块,则无法使用二进制文件序列化测试数据:Haskell 使用Cabal安装模块后未解析Typeclass实例,haskell,ghc,typeclass,cabal,Haskell,Ghc,Typeclass,Cabal,我创建了一个简单的项目来演示这个问题: 如果我使用“cabal install”编译并安装模块,则无法使用二进制文件序列化测试数据: > ghci GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package i
> ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
ghci> :m +TestBinary.Test Data.Binary
ghci> randomData . decode $ encode emptyTest
<interactive>:1:24:
No instance for (Binary TTestData)
arising from a use of `encode'
Possible fix: add an instance declaration for (Binary TTestData)
In the second argument of `($)', namely `encode emptyTest'
In the expression: randomData . decode $ encode emptyTest
In an equation for `it':
it = randomData . decode $ encode emptyTest
Haskell编译器的版本:
> ghci --version
The Glorious Glasgow Haskell Compilation System, version 7.0.4
在你的.阴谋集团档案中,你有
Build-depends: base < 5, ghc-binary >= 0.5, bytestring >= 0.9.1
构建取决于:base<5,ghc binary>=0.5,bytestring>=0.9.1
通常,ghc二进制文件
不公开,除非ghc本身使用,否则不打算使用它。当您将Data.Binary
加载到ghci中时,它会从包中加载模块,并且该包中的Binary
类与ghc Binary
中的类不同,因此TTestData
没有实例
如果从源代码加载文件,ghci不关心.cabal文件,而是直接使用源代码中的类,因此它可以工作
您应该将依赖项更改为包
Build-depends: base < 5, ghc-binary >= 0.5, bytestring >= 0.9.1