Computation equivalence of functional and procedural programming I'm really interested in the idea of functional programming, it seems like a very modular way of doings things. I've seen some suggestion that functional programming is just as powerful as procedural programming (any problem you can solve with one can be solved with another).
I'm curious as to how this conclusion was originally derived, and whether there is a conclusive proof as to this (preferably one that a bit of a newb to lambda calculus like me can understand)
Related:
Why are functional languages Turing complete
One standard way to prove that a language is Turing-complete is to implement a simulator for a Turing machine (or for any other Turing-complete language) in that language.  That is typically straightforward but boring, for most general-purpose languages.
You can find more resources on Turing-completeness in turing-completeness; see especially, e.g., Is there an algorithm for converting Turing machines into equivalent Lambda expressions?.  You might also be interested in Which calculus is based on first-order functions and is Turing complete?, Are there minimum criteria for a programming language being Turing complete?, What does being Turing complete mean?, Are all turing complete languages interchangeable, Clear, complete, proof that a language is Turing Compete?.