我怎样才能发出多个呼叫SDL.pollEvent :: IO Event http://hackage.haskell.org/packages/archive/SDL/0.6.2/doc/html/Graphics-UI-SDL-Events.html#v%3ApollEvent直到输出为SDL.NoEvent
并将所有结果收集到一个列表中?
用命令式的术语来说是这样的:
events = []
event = SDL.pollEvent
while ( event != SDL.NoEvent ) {
events.add( event )
event = SDL.pollEvent
}
詹姆斯库克非常友善地延长了单子循环 http://hackage.haskell.org/packages/archive/monad-loops/0.3.1.0/doc/html/Control-Monad-Loops.html具有此功能:
unfoldWhileM :: Monad m => (a -> Bool) -> m a -> m [a]
与 SDL 一起使用:
events <- unfoldWhileM (/= SDL.NoEvent) SDL.pollEvent
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)