2015-10-01 65 views
1

我已经使用Cabal for GHC 7.10.2安装了Vector包和REPA。运行这个程序:GHC 7.10.2 Data.Vector.Unboxed与REPA的冲突3.4.0.1

import qualified Data.Array.Repa as R 
import qualified Data.Vector.Unboxed as U 

main = print $ R.fromUnboxed (R.Z R.:. 16 R.:. 16) (U.replicate 10 0) 

我收到以下错误:

repa.hs:4:53: 
    Couldn't match expected type ‘vector-0.10.12.3:Data.Vector.Unboxed.Base.Vector 
            e0’ 
       with actual type ‘U.Vector a0’ 
    NB: ‘vector-0.10.12.3:Data.Vector.Unboxed.Base.Vector’ 
      is defined in ‘Data.Vector.Unboxed.Base’ 
       in package ‘vector-0.10.12.3’ 
     ‘U.Vector’ 
      is defined in ‘Data.Vector.Unboxed.Base’ 
       in package ‘vector-0.11.0.0’ 
    In the second argument of ‘R.fromUnboxed’, namely 
     ‘(U.replicate 10 0)’ 
    In the second argument of ‘($)’, namely 
     ‘R.fromUnboxed (R.Z R.:. 16 R.:. 16) (U.replicate 10 0)’ 

运行ghc-pkg list | grep vector,我注意到2个版本矢量包:

vector-0.10.12.3 
vector-0.11.0.0 
vector-th-unbox-0.2.1.2 

我跑ghc-pkg hide vector-0.10.12.3,并试图重新编译,但错误仍然存​​在。看起来vector-0.10.12.3已经安装(是它的一部分?),但它并没有暴露Data.Vector.Unboxed。我该如何解决这个问题?

回答

1

我认为你需要隐藏其他版本。 GHCi似乎在拉动最近的可用版本的vector,这是而不是一个REPA是编译针对。 stack因擅长避免这些问题而享有声誉,但在您特别简单的情况下,即使cabal也应该能够弄清楚。您可能需要为您的项目设置Cabal或Stack配置。