尝试使用 Repa 包时不在范围内错误

Not in scope error when trying to use Repa package

我对 Haskell 比较陌生,我正在尝试在项目中使用 Repa 包。我已经使用 import qualified Data.Array.Repa as R 在我的源代码中导入了包,但是在 ghci 中加载 Haskell 文件时,出现以下错误:

Location_repa.hs:46:26:
Not in scope: type constructor or class `D'
Perhaps you meant `R.D' (imported from Data.Array.Repa)

Location_repa.hs:46:29:
Not in scope: type constructor or class `Z'
Perhaps you meant `R.Z' (imported from Data.Array.Repa)

Location_repa.hs:46:30:
Illegal operator `:.' in type `Z :. (Dimension :: Int)'
Use TypeOperators to allow operators in types
.....

这里是使用 Repa:

的源代码部分
type CoordList = Array D (Z:. (Dimension::Int)) Integer

好像没有导入(加载)包。使用 ghc-pkg list repa 结果如下:

C:/Program Files/Haskell Platform/7.10.2-a\lib\package.conf.d:
(no packages)
C:\Users\...\AppData\Roaming\ghc\x86_64-mingw32-7.10.2\package.conf.d:
repa-3.4.1.1

我该怎么办?

看来你有两个问题。首先,您要导入合格的模块,但不合格地使用它。您可以为不想限定的定义添加额外的导入:

import Data.Array.Repa (D,Z,(:.))

第二个问题是第三条错误消息告诉您的内容。您需要打开 TypeOperators 扩展程序。把这个放在你的文件的顶部:

{-# LANGUAGE TypeOperators #-}