Articles

The first article below gives the most compact survey of the use of FunctionalForms. However, it focuses on the most recent extension: disjoint forms. The FForm type in the article differs a little from the library's current type. (This extension is not available for download yet.)

The second article describes the architecture and design rationale of FunctionalForms in detail. Again, there is a small inconsistency between the current FForm and that in the article: the current type has an extra type parameter indicating the form's layout type (mostly Layout). This parameter was added in order to structure the type as a monad.

Disjoint Forms in Graphical User Interfaces

Sander Evers, Peter Achten, Rinus Plasmeijer. In: H.W. Loidl, Proceedings of the Fifth Symposium on Trends in Functional Programming (TFP 2004). Intellect, 2005.

Forms are parts of a graphical user interface (GUI) that show a set of values and allow the user to update them. The declarative form construction library FunctionalForms is extended with disjoint form combinators to capture some common patterns in which the form structure expresses a choice. We demonstrate that these combinators lead to a better separation of logic and layout.

[pdf] [BibTeX]

A Functional Programming Technique for Forms in Graphical User Interfaces

Sander Evers, Peter Achten, Jan Kuper. In: C. Grelck, F. Huch, Proceedings of the 16th International Workshop on Implementation and Application of Functional Languages (IFL 2004), vol. 3474 of LNCS, pp. 35-51. Springer-Verlag, 2005.

This paper presents FunctionalForms, a new combinator library for constructing fully functioning forms in a concise and flexible way. A form is a part of a graphical user interface (GUI) restricted to displaying a value and allowing the user to modify it. The library is built on top of the medium-level GUI library wxHaskell. To obtain complete separation between the structure of a form's layout and that of the edited values, we introduce a technique called compositional functional references.

[pdf] [BibTeX]