Interpreter for a functional programming language which supports lexical scoping, recursion and stores