Although detractors of functional programming sometimes claim that functional programming
is too difficult or counter-intuitive for most programmers to understand and use, evidence
to the contrary can be found by looking at the popularity of spreadsheets. The spreadsheet
paradigm, a first-order subset of the functional programming paradigm, has found wide
acceptance among both programmers and end users. Still, there are many limitations with
most spreadsheet systems. In this paper, we discuss language features that eliminate several
of these limitations without deviating from the first-order, declarative evaluation model.
The language used to illustrate these features is a research language called Forms/3. Using
Forms/3, we show that procedural abstraction, data abstraction and graphics output can be
supported in the spreadsheet paradigm. We show that, with the addition of a simple model of
time, animated output and GUI I/O also become viable. To demonstrate generality, we also
present an animated Turing machine simulator programmed using these features. Throughout
the paper, we combine our discussion of the programming language characteristics with
how the language features prototyped in Forms/3 relate to what is known about human
effectiveness in programming.