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

Henning Thielemann lemming at henning-thielemann.de
Fri Jul 8 17:18:31 CEST 2011


On Fri, 8 Jul 2011, 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. :-)

I have some very small wxwidgets example programs that send and receive 
MIDI messages via ALSA in order to map, e.g. sliders to MIDI controller 
knobs. I must synchronize the value of a slider with a spin widget and 
incoming and outgoing MIDI messages and found the way to connect them very 
low-level. I would like to see this in a more declarative style.

http://hackage.haskell.org/package/alsa-gui



> * I think that Tim Docker's minimal step sequencer [hbeat][] simply makes a 
> great example. I hope that wxHaskell offers a platform-independent way to 
> play sound.

I think there are some ways for playing sounds in a portable way, like 
'jack' or PortAudio.

> * 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.



More information about the Haskell-Cafe mailing list