Conal Elliott <> wrote:

> I first tried an imperative push-based FRP in 1998, and I had exactly
> the same experience as Heinrich mentions. The toughest two aspects of
> imperative implementation were sharing and event merge/union/mappend.

This is exactly why I chose not to follow the imperative path from the
very beginning and followed Yampa's example instead.  Currently the
denotational semantics of Netwire are only in my head, but the following
is planned for the future:

  * Take inspiration from 'pipes' and find a way to add push/pull
    without giving up ArrowLoop.  This has the highest priority, but
    it's also the hardest part.

  * Write down the denotational semantics as a specification.
    Optionally try to prove them in a theorem prover.

  * Engage more with you guys.  We all have brilliant ideas and more
    communication could help us bringing FRP to the masses.

I also plan to expose an opaque subset of Netwire which strictly
enforces the traditional notion of FRP, e.g. continuous time.  Netwire
itself is really a stream processing abstraction and doesn't force you
program in a reactive style.  This is both a strength and a weakness.
There is too much potential for abuse in this general setting.


Not to be or to be and (not to be or to be and (not to be or to be and
(not to be or to be and ... that is the list monad.

Attachment: signature.asc
Description: PGP signature

Haskell-Cafe mailing list

Reply via email to