A Programming Tutor for Haskell

Johan Jeuring, Alex Gerdes, and Bastiaan Heeren

In these lectures we will introduce an interactive system that supports writing simple functional programs. Using this system, students learning functional programming: develop their programs incrementally, receive feedback about whether or not they are on the right track, can ask for a hint when they are stuck, see how a complete program is stepwise constructed, and get suggestions about how to refactor their program. The system itself is implemented as a functional program, and uses fundamental concepts such as rewriting, parsing, strategies, program transformations and higher-order combinators such as the fold. We will introduce these concepts, and show how they are used in the implementation of the interactive functional programming tutor.

In Central European Functional Programming School, volume 7241 of Lecture Notes in Computer Science, pages 1-45.
Full paper