
On Sat, Dec 31, 2016 at 01:50:28AM +0100, Ertugrul Söylemez wrote:
This is the problem. You actually have the 'keyEvent' wire twice in there, which means that both are trying to take from the 'MVar', which in turn means that in any frame if keyQ gets nothing, it's very unlikely that keyA will get something (because it runs pretty much directly after keyQ), and whenever keyQ gets something, it will clear the MVar, so keyA gets nothing again. The real solution is not to have keyEvent twice in there:
proc _ -> do keys <- keyEvent -< () qKeys <- filterE (== 'q') -< keys aKeys <- filterE (== 'a') -< keys hold -< mergeL qKeys aKeys
Very helpful, it's clear now (pity we have to use arrow interface, I much preferred applicative). I'll check `wires` too as suggested. Thanks again -F