[Haskell-beginners] firering event in netwire
Nathan Hüsken
nathan.huesken at posteo.de
Sat Sep 29 19:19:46 CEST 2012
On 09/29/2012 08:56 AM, Ertugrul Söylemez wrote:
>> Or asked differently, how is the "keyDown" event defined, that was
>> talked of in an earlier mail?
>
> In the direct case you can define it as a simple composition:
>
> isSym :: KeySym -> SDL.Event -> Bool
> isSym s (KeyDown s') = s == s'
> isSym _ _ = False
>
> keyDown = require . isSym
>
While I understand the principals, I am unsure about the practical usage.
The input of keyDown is an SDL.Event. But in an application, I would
have a list of Events for every invocation of stepWire. So I could
define keyDown like this:
keyDown s = require . and . map (isSym s)
That would give me an event when my desired keypress event is in the
list of input events.
but if I then want to create a wire passed in this which outputs if a
given key is currently pressed, I would attempt something like this:
isPressed :: KeySym -> WireP [SDL.Event] Bool
isPressed s = hold . (True . (keyDown s) <|> False . (keyUp s))
But if some fast typer releases and presses within one stepWire a
certain key, isPressed would produce an incorrect result.
Regards,
Nathan
More information about the Beginners
mailing list