Sto cercando di usare la funzione della biblioteca Gloss play
, che prende una funzione di gestione degli eventi il cui primo argomento è di tipo Event
(secondo il Hackage documentation). Sto lavorando su Windows con GHC 7.6.3 e Gloss 1.8.0.1.Come accedere al tipo di evento Graphics.Gloss in Haskell?
Ecco un abbozzo di quello che sto cercando di fare:
import Graphics.Gloss
type GameState = [Int]
handleInputEvent :: Event -> GameState -> GameState
handleInputEvent _ = id -- Just stubbed in for now
L'errore del compilatore è:
Not in scope: type constructor or class `Event'
Se entro in WinGHCI e l'importazione Graphics.Gloss e chiedo per la tipo di firma play
, sembra che questo:
play ::
Display
-> Color
-> Int
-> world
-> (world -> Picture)
-> (gloss-1.8.0.1:Graphics.Gloss.Internals.Interface.Event.Event
-> world -> world)
-> (Float -> world -> world)
-> IO()
sto indovinando questo ha qualcosa a che fare con il nome Event
si scontrano con qualche altro modulo e quindi non viene importato nello stesso modo degli altri simboli di Gloss.
Come parlare con Haskell di Gloss 'Event
?
Grazie! Questa sera sono tornato a casa e ho iniziato a leggere il codice della libreria Gloss, importando varie cose, e l'ho capito. –
Non ho capito la documentazione, immagino; la funzione play qui è visibile senza importare Graphics.Gloss.Interface.Pure.Game, quindi ho pensato che il resto dei simboli lì sarebbe anche visibile. –
@ user5014: Sì, in genere un modulo di alto livello come questo dovrebbe ri-esportare le definizioni di tipi che si aspetta client di utilizzare. Questa era probabilmente una svista. –