Yet another attempt at correctly formulating FRP in Haskell.