We report a part of the work of The Calculator Project, a joint resear
ch project with QMW and the Open University (Fung et al., 1991). We be
gin with a case for computer calculators in teaching logic and program
ming where we set out reasons for using tools in teaching. We provide
some background to the project, based on a survey of existing tools an
d previous studies (Goldson and Reeves, 1993; Goldson et al., 1992, 19
93). The case for calculators is intended to set out the basic educati
onal assumptions underlying the project and to motivate the detailed d
escription of one of the tools that has been developed, MiraCalc, a ca
lculator for the programming language Miranda (Turner, 1986). MiraCalc
is one of only a few systems of its kind and it is, to our knowledge,
the only one to have been used in the 'classroom We describe the spec
ial problems raised by the design of an evaluator for a non-strict fun
ctional language, together with the design choices that were made in a
chieving their solution. The Calculator Project has a strong empirical
component which is not described here but its findings are summarized
in the conclusion. This paper concentrates on the underlying assumpti
ons of the project and the technical issues raised by the design of a
calculator for a non-strict functional language.