[Haskell-cafe] Call for GUI examples - Functional Reactive Programming

Heinrich Apfelmus apfelmus at quantentunnel.de
Sat Jul 9 10:09:12 CEST 2011


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




More information about the Haskell-Cafe mailing list