A few other strategies for solving this problem include something along the lines of the Small Clojure Interpreter (1) and Defunctionalization (2, 3)
[1] https://github.com/borkdude/sci
[2] https://blog.sigplan.org/2019/12/30/defunctionalization-ever...
[3] https://www.cis.upenn.edu/~plclub/blog/2020-05-15-Defunction...