Graph reduction is a technique for implementing functional programming languages. This video shows an interpreter I wrote for a small functional language based on lambda calculus. The interpreter visualises the state of the program’s expression graph, and shows the changes that occur to it during evaluation. The interpreter was written in C and OpenGL.
Colour codes are: Red - values (numbers and booleans), Blue - symbols (function references and variables), Cyan - lambda abstractions (function definitions), Green - function applications, Magenta - current reduction node.