2013-10-12 26 views
5

我試圖使用Gloss庫的play函數,該函數接受一個事件處理函數,該函數的第一個參數類型爲Event(根據Hackage documentation)。我正在使用GHC 7.6.3和Gloss 1.8.0.1在Windows上工作。如何訪問Haskell中的Graphics.Gloss事件類型?

這裏是我想要做一個素描:

import Graphics.Gloss 

type GameState = [Int] 

handleInputEvent :: Event -> GameState -> GameState 
handleInputEvent _ = id -- Just stubbed in for now 

編譯器錯誤是:

Not in scope: type constructor or class `Event' 

如果我進入WinGHCI和進口Graphics.Gloss,並要求它的類型簽名play,它看起來像這樣:

play :: 
    Display 
    -> Color 
    -> Int 
    -> world 
    -> (world -> Picture) 
    -> (gloss-1.8.0.1:Graphics.Gloss.Internals.Interface.Event.Event 
     -> world -> world) 
    -> (Float -> world -> world) 
    -> IO() 

我猜這跟這個有關名稱Event與其他模塊衝突,因此不會以與來自Gloss的其他符號相同的方式導入。

如何與Haskell談論關於Gloss'Event

回答

1

如果您按照play類型簽名中的Hackage上的鏈接,並且發現從Graphics.Gloss.Interface.Pure.Game導出Event,那麼只需導入該模塊。

+0

謝謝!我今天晚上回到家中,開始閱讀Gloss庫的代碼,導入各種各樣的東西,並計算出來。 –

+0

我猜想我並不理解文檔;沒有導入Graphics.Gloss.Interface.Pure.Game就可以看到那裏的播放功能,所以我認爲其中的其他符號也是可見的。 –

+1

@ user5014:是的,通常這樣的頂級模塊應該重新導出它期望客戶端使用的類型的定義。這可能是一個疏忽。 –