The goal of the Parrot virtual machine is to host client languages and allow inter-operation between them.
Parrot has rich support for several features of functional programming including closures and continuations, both of which can be particularly difficult to implement correctly and portably, especially in conjunction with exception handling and threading.