Haskell 为什么不是';导入列表是否在GHC中工作?

Haskell 为什么不是';导入列表是否在GHC中工作?,haskell,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' 但是删除导入列表可以使编译成功(即使上面导入了JSObj

无法编译以下内容:

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


为什么GHC(7.4.2)会忽略我导入的
JSObject

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

在模块声明后缩进不是惯用的方法,所以,如果你不是特别喜欢,我建议你避免。
module Main where
  import Text.JSON

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