Functional programming presents new challenges in the design of programming
environments. In a strongly typed functional language, such as ML, much co
nventional debugging of runtime errors is replaced by dealing with compile-
time error reports. On the other hand, the cleanness of functional programm
ing opens up new possibilities for incorporating sophisticated correctness-
checking techniques into such environments. C(Y)NTHIA is a novel editor for
ML that both addresses the challenges and explores the possibilities. It u
ses an underlying proof system as a framework for automatically checking fo
r semantic errors such as non-termination. In addition, C(Y)NTHIA embodies
the idea of programming by analogy-whereby users write programs by applying
abstract transformations to existing programs. This paper investigates C(Y
)NTHIA's potential as a novice ML programming environment. We report on two
studies in which it was found that students using C(Y)NTHIA commit fewer e
rrors and correct errors more quickly than when using a compiler/text edito
r approach. (C) 2000 Academic Press.