Donc le flush a lieu dans l'action du main, pas dans le
displayCallback qui survient plus tard. Donc le displayCallback effectue pleins de "clear [ColorBuffer]", sans jamais flush.
À l'opposé :
displayCallback$=doclear[ColorBuffer];flush
Devient :
displayCallback$=(clear[ColorBuffer]>>flush)
Ce qui est vraisemblablement ce que tu veux vraiment faire.
Cela vient du fait que $= est prioritaire sur >> dans la définition.
Pour voir les priorités :
Prelude>importGraphics.UI.GLUTPreludeGraphics.UI.GLUT>:info($=)classHasSetterswhere($=)::sa->a->IO()-- Defined in Data.StateVarinfixr2$=PreludeGraphics.UI.GLUT>:info(>>)classMonadmwhere...(>>)::ma->mb->mb...-- Defined in GHC.Baseinfixl1>>PreludeGraphics.UI.GLUT>
# Priorité des opérateurs
Posté par Def . En réponse au message Haskell, problème de strictitude de do. Évalué à 4. Dernière modification le 18 décembre 2011 à 00:52.
La ligne :
Est analysée par le compilateur comme :
Donc le flush a lieu dans l'action du main, pas dans le
displayCallback qui survient plus tard. Donc le displayCallback effectue pleins de "clear [ColorBuffer]", sans jamais flush.
À l'opposé :
Devient :
Ce qui est vraisemblablement ce que tu veux vraiment faire.
Cela vient du fait que $= est prioritaire sur >> dans la définition.
Pour voir les priorités :