
On 09/27/2012 01:45 AM, Ertugrul Söylemez wrote:
Nathan Hüsken
wrote: In my (SDL based) haskell program, I do:
events <- liftM ( takeWhile (/= NoEvent)) $ sequence $ repeat pollEvent
The execution of this never returns, I am guessing that is because sequence evaluation never stops.
But if sequence would be lazy (and assuming pollEvent returns NoEvent at some point) this should stop, should it not? Is there a lazy variant of sequence? Or am I missing something here completely?
The sequence function itself cannot be lazy, and there can't be a lazy variant of it.
I understand, that it is a bad Idea. But why is it impossible to have an lazy sequence? Why can it not wait with the execution of the action for the list elements to be evaluated?
By the way, if your application is non-continuously rendered, which is suggested by your ignoring of NoEvent, you shouldn't use pollEvent at all.
The Idea of the line what to return all events that happened in the current frame (which are to my understanding all events until pollEvent returns NoEvent).
Hope this helps.
Yes, thank you. I have to read into the Coroutine approach a little more before to understand it :). Best Regards, Nathan