Afaik, you're right about Yampa not being event-driven. I've been working on alternatives for a while that are event-driven while still genuinely functional (non-IO). See
http://haskell.org/haskellwiki/Reactive and http://haskell.org/haskellwiki/TV . I have some blog posts in the works about the inner goings-on of Reactive.
- Conal
[...]
The main problem I could see is that Yampa is not really event driven in the imperative sense; I mean in an ideal event based system, the hardware triggers an interrupt when some sensor changes, and this then triggers other software events; only the code that is related to handling the event that occurred is executed. But the event that is handled could potentially not be needed for the current output (which could be considered as a programming bug...) I think Yampa does not do that, it kinda "pulls" the information out of the current signal function network, which has the advantage of only executing the code that is needed for the output, but the disadvantage is that it does a lot of routing and checking which event happened.
Warning to newbies: the above is most likely incorrect information, this is just the way I experienced it ;-)