Henning Thielemann wrote:
Heinrich Apfelmus wrote:
Can GUI programming be liberated from the IO monad? Functional
Reactive Programming (FRP) promises as much, and I'm trying to make
this dream a reality with my [reactive-banana][] library. Having
released version 0.4.0.0, I am now looking for example programs to
direct the future evolution of the library.
This is the request that I was waiting for. :-)
:D
* Notes of a musical performance can be modeled as event streams
(MIDI), as Henning Thielemann has [done with great effect][midi
streams]. Surely, reactive-banana should be up to the task, but
writing an arpeggiator seems impossible at the moment.
Oh, I am addressed explicitly, thanks! Yes, GUI for 'streamed' would be
nice, too.
In the meantime I switched from an approach with lazy lists
to one with arrow-like stream processors. This way I could resolve all
issues with wrong timing and inappropriate waiting, but now code looks
more low-level. There are some examples lying around, that I even not
started to implement, because I expect that implementing them in the
current low-level way will yield nasty bugs. Thus I am highly interested
in more sophisticated MIDI stream editor combinators. I expect that
inspiration from other FRP frameworks would help me.
Of course, my intention was that you throw away your stream processors
and use reactive-banana for everything. ;D I have made sure that it can
be used both for real-time and for offline computations.
Could you expand a little on your arrow-like stream processors? What do
the arrows look like,
data SF a b = SF (a -> (b, SF a b))
? Which additional primitives did you include, for instance
switch :: SF in (out, Maybe t) -> (t -> SF in out) -> SF in out
delay :: Time -> SF a b -> SF a b
?
And of course, I am particularly interested in the nasty examples that
you came up with. :)
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe