2013-04-09 45 views
4

下無法編譯:爲什麼在GHC中沒有導入列表?

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

模塊聲明後縮進不是慣用的,所以如果你沒有特別附加,我會建議避免它。 – Davorak 2013-04-09 19:41:51

回答

9

如果你寫import Text.JSON (JSObject)你只導入類型,而不是它具有的構造函數。要導入構造函數,請執行import Text.JSON (JSObject(..))或代替..指定您希望使用的構造函數名稱的逗號分隔列表,例如, Text.JSON(JSObject(Cons1, Cons2))

相關問題