这里发生了什么?我正在导入一个数据构造函数,显然是成功的,因为我没有收到错误,但是当我尝试使用构造函数时,我收到一个错误,说它不在范围内!
在Test.hs
:
import Database.Persist (Key)
main = Key
结果:
$ ghc test.hs
[1 of 1] Compiling Main ( test.hs, test.o )
test.hs:3:8: Not in scope: data constructor `Key'
答案 0 :(得分:14)
import Database.Persist (Key)
上面导入了一个名为Key
但不包含其构造函数的类型。要导入您需要执行的Key
类型的构造函数Key
import Database.Persist (Key(Key))
或只是
import Database.Persist (Key(..))
导入给定类型的所有构造函数。
答案 1 :(得分:3)
要导入构造函数,必须使用以下语法
import Database.Persist (Key (..))
通常,按名称导入类型或类型类时,只会导入类型。必须使用Name (..)
或Name (Constructor)
语法导入构造函数和成员函数。这非常方便,因为即使您不需要构造或检查该类型的值,您也需要使用导入类型编写类型签名。