Some time ago, I was surprised not to find many untyped & simply-typed lambda calculus interpreters among the answers to this question, so I started working for a while in an educational lambda calculus interpreter called Mikrokosmos (can also be used online). It implements untyped and simply typed lambda calculus (and also illustrates Curry-Howard).
Surely, you could also use some functional programming language; but at least for me, it was difficult to determine exactly which constructs of the language are lambda calculus and which are extras offered by that particular language. Haskell for instance approximately implements System-F, but I also wanted to have a simply(as simple as possible)-typed lambda calculus interpreter.
The interpreter is free software and you can integrate them on other learning materials (such as Jupyter notebooks or web pages). I have used it before to teach lambda calculus to CS students.
Please note that I am the main developer of this interpreter. I am only posting here because this same question inspired me to start the development.