Я вот всё прододжаю разбираться с FRP. И в классическом FRP, и в push-pull события это бесконечный список [(Time, a)].
И в результате возникает впечатление, что FRP задумывался как нечто, неизбежно использующееся с lazy IO. И, понятное дело, что это не очень перспективное направление из-за принципиальной невозможности настоящего lazy IO.
В реактивных бананах нет ленивого IO, но зато там очень много ленивого, но "грязного" кода, т.е. всякие бесконечные списки и графы, содержащие IO a.
И у меня возник вопрос: а можно ли сделать FRP чистым, но при этом строгим при соприкосновении с IO? Не превращая просто чистую часть программы в :: a -> State (Time -> b) c ?