J'apprends encore Haskell et j'ai besoin d'aide pour l'inférence de type s'il vous plaît!Signature de type "Peut-être un" n'aime pas "Juste [Événement]"
Utiliser des paquets SDL et Yampa je reçois la signature de type suivant de FRP.Yampa.reactimate
:
(Bool -> IO (DTime, Maybe a))
et je veux l'utiliser pour:
myInput :: Bool -> IO (DTime, Maybe [SDL.Event])
myInput isBlocking = do
event <- SDL.pollEvent
return (1, Just [event])
...
reactimate myInit myInput myOutput mySF
mais il dit
Couldn't match expected type `()' against inferred type `[SDL.Event]' Expected type: IO (DTime, Maybe()) Inferred type: IO (DTime, Maybe [SDL.Event]) In the second argument of `reactimate', namely `input' In the expression: reactimate initialize input output process
Je pensais que Maybe a
me permet d'utiliser n'importe quoi, veille n une liste SDL.Event
? Pourquoi s'attend-il à Maybe()
lorsque la signature de type est réellement ? Pourquoi veut-il un n-uplet vide, ou une fonction ne prenant pas d'arguments, ou que doit-on supposer être ()
?
Il est préférable de l'appeler * le type d'unité *, au moins dans ce contexte. – Martijn