Functional Programming for Writing Programming Languages

Just curious, what makes functional programming useful for writing programming languages?

Integrating multiple C/C++/python, etc. Just curious what the motivation is. I haven’t dug into it much.

I believe the main advantages are pattern matching and garbage collection because they make AST manipulation easier.

There’s a thread on the choice of language for the Stan compiler (although the discussion ends up being mostly RStan installation issues)