Evaluating Haskell expressions in a tutoring environment
Tim Olmer (Open University of the Netherlands), Bastiaan Heeren (Open, University of the Netherlands), Johan Jeuring (Universiteit Utrecht, Open, University of the Netherlands)

TL;DR
This paper introduces a prototype tool for stepwise evaluation of Haskell expressions aimed at educational use, enabling students to perform and receive feedback on expression evaluation steps to enhance understanding of functional programming concepts.
Contribution
It presents a novel interactive evaluator supporting multiple strategies, with feedback and easy customization for instructors, tailored for teaching Haskell evaluation.
Findings
Students improved understanding of evaluation steps
The tool provided useful feedback for learners
Preliminary survey results indicate positive educational impact
Abstract
A number of introductory textbooks for Haskell use calculations right from the start to give the reader insight into the evaluation of expressions and the behavior of functional programs. Many programming concepts that are important in the functional programming paradigm, such as recursion, higher-order functions, pattern-matching, and lazy evaluation, can be partially explained by showing a stepwise computation. A student gets a better understanding of these concepts if she performs these evaluation steps herself. Tool support for experimenting with the evaluation of Haskell expressions is currently lacking. In this paper we present a prototype implementation of a stepwise evaluator for Haskell expressions that supports multiple evaluation strategies, specifically targeted at education. Besides performing evaluation steps the tool also diagnoses steps that are submitted by a student,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
