In particular, this kind of mini embedded language interpreters can be great to build upon. For the folks who think LISP is dead and irrelevant (spoiler, it is not), think of https://www.lua.org/ as a prominent embedded language. Lua is based on a stack based programming idiom/VM. In a similar spirit, LISP is somewhat the lingua franca for intermediate code representation and therefore omnipresent in compiler contexts.
You can even write LISP interpreters in less lines of code. Norvig required 90 lines of Python: http://norvig.com/lispy2.html :-)
+1 really cool project! Definitely appreciate the use of Modern Java (records, pattern matching etc.) for showing that Java might not necessarily be extremely verbose compared to some dynamic languages. I'd recommend adding Nim and Kotlin as well (nim -> for comparison with python and kotlin for comparison with java)
Well done. I love the smallness. Small is strong.