
Jeffrey Brown wrote:
Dear list,
I want to write an application in which the set of widgets in existence, and the subset of them that is displayed, depends on user input. I am using reactive-banana. So far the simplest spec I have imagined for it is this:
Initially there is just a text entry box and an empty (hence invisible) collection of labels.
The user can do two things: enter the word "add", or enter an integer.
Entering the word "add" causes a label to be added to the collection, but not displayed. The labels require no text content.
Entering an integer N causes the first N labels to be displayed onscreen. The text entry box remains visible.
I am totally baffled. In particular, the Behavior paradigm, though it is elegant and beautiful whenever I study it, I have no idea how to apply.
This looks like you need "dynamic event switching", i.e. the module `Reactive.Banana.Switch`. It's very cool, but may be more difficult to understand than the standard combinators, mainly because of the additional type parameters. To see how it works, have a look at the `BarTab.hs` example. It implements a program that is very similar to what you describe here. Best regards, Heinrich Apfelmus -- http://apfelmus.nfshost.com