成功导入Data Constructor不在范围内?

时间:2013-12-30 07:17:56

标签: haskell types import

这里发生了什么?我正在导入一个数据构造函数,显然是成功的,因为我没有收到错误,但是当我尝试使用构造函数时,我收到一个错误,说它不在范围内!

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'

2 个答案:

答案 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)语法导入构造函数和成员函数。这非常方便,因为即使您不需要构造或检查该类型的值,您也需要使用导入类型编写类型签名。