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 に答える