4

以下无法编译:

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

4

1 回答 1

9

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

于 2013-04-09T16:12:05.640 回答