Having to give values for a lot of parameters clearly makes library components more difficult to use. In some programming languages there is a mechanism that allows a function parameter to be omitted if the function definition specifies a default value for it. This makes functions easy to use and customizable at the same time. The user interface contains a button and a numeric display. When you press the button the number in the display is incremented.
Data flow from right to left.
The button outputs clicks that are fed to the counter. For every click, the counter increments its internal integer state and outputs the new value to the display. Readers mainly interested in GUI construction may want to skip directly to Section 5 and then go back to the earlier sections to learn more about what stream processors and fudgets really are. Note that in Haskell, functions can be used as infix operators by placing them in backquotes.