1

我已经安装了该Vector软件包并REPA使用 Cabal for GHC 7.10.2。运行这个程序:

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已经安装了(它是 Base 的一部分吗?),但它没有暴露Data.Vector.Unboxed. 我该如何解决这个问题?

4

1 回答 1

1

我认为您需要隐藏其他版本。GHCi 似乎正在引入最新的可用版本vector,而不是针对该版本REPA进行编译。stack以擅长避免此类问题而闻名,但在您特别简单的情况下,甚至cabal应该能够弄清楚。您可能希望为您的项目设置 Cabal 或 Stack 配置。

于 2015-10-01T21:55:08.777 回答