为什么GHC中的导入列表不起作用?

时间:2013-04-09 16:06:15

标签: haskell

以下无法编译:

module Main where
  import Text.JSON (JSObject, JSValue)

  main = print "hello world"
  getObject :: JSValue -> JSObject JSValue
  getObject (JSObject x) = x

给出错误:

Not in scope: data constructor `JSObject'

但是删除导入列表可以使编译成功成功(即使上面已导入JSObject

module Main where
  import Text.JSON

  main = print "hello world"
  getObject :: JSValue -> JSObject JSValue
  getObject (JSObject x) = x

为什么GHC(7.4.2)忽略了我对JSObject的导入?

1 个答案:

答案 0 :(得分:9)

如果您编写import Text.JSON (JSObject),则只导入类型,而不是它具有的构造函数。要导入构造函数,请import Text.JSON (JSObject(..))或代替..指定要使用的逗号分隔的构造函数名称列表,例如: Text.JSON(JSObject(Cons1, Cons2))