J'essaie d'utiliser la fonction play
de la bibliothèque Gloss, qui prend une fonction de gestion d'événements dont le premier argument est de type Event
(selon le Hackage documentation). Je travaille sur Windows avec GHC 7.6.3 et Gloss 1.8.0.1.Comment accéder au type d'événement Graphics.Gloss dans Haskell?
Voici une esquisse de ce que je suis en train de faire:
import Graphics.Gloss
type GameState = [Int]
handleInputEvent :: Event -> GameState -> GameState
handleInputEvent _ = id -- Just stubbed in for now
L'erreur du compilateur est:
Not in scope: type constructor or class `Event'
Si je vais dans WinGHCI et l'importation Graphics.Gloss et demande pour la signature de type de play
, il ressemble à ceci:
play ::
Display
-> Color
-> Int
-> world
-> (world -> Picture)
-> (gloss-1.8.0.1:Graphics.Gloss.Internals.Interface.Event.Event
-> world -> world)
-> (Float -> world -> world)
-> IO()
Je devine que cela a quelque chose à voir avec le nom Event
se heurte à un autre module, et n'est donc pas importé de la même manière que les autres symboles de Gloss. Comment parler à Haskell à propos de Gloss 'Event
?
Merci beaucoup! Je suis rentré chez moi ce soir et j'ai commencé à passer en revue le code de la bibliothèque Gloss, en important diverses choses, et je me suis rendu compte de cela. –
Je n'ai pas compris la documentation, je suppose; la fonction de lecture est visible sans importer Graphics.Gloss.Interface.Pure.Game, donc j'ai supposé que le reste des symboles serait également visible. –
@ user5014: Oui, en général, un module de niveau supérieur comme celui-ci devrait réexporter les définitions des types qu'il s'attend à ce que les clients utilisent. C'était probablement un oubli. –