OK, the only other thing that comes to mind is Gabriel Gonzalez’ Morte language/implementation which is a sort of bytecode based on typed lambda calculus: http://www.haskellforall.com/2014/09/morte-intermediate-language-for-super.html
He mentions in that post:
Additionally, Morte might be usable to transmit code in a secure and typed way in distributed environment or to share code between diverse functional language by providing a common intermediate language. However, both of those scenarios require additional work, such as establishing a shared set of foreign primitives and creating Morte encoders/decoders for each target language.
So, it’s probably not something you can use today, but in the future–maybe. And today, the basic idea is probably not that far off from creating your own DSL as I mentioned.