>>21All three solved the ABI problem "within their respective platforms". The problem comes when you need to add a new language to any of said platforms. Defining an ABI for a single, highly expressive language is hard enough; defining one for multiple dissimilar languages is verging on impossible. This is not a big problem for C because C is barely a language to start with.
Microsoft had to make serious changes to CLR to add support for languages like Python; imagine what adding support for Haskell would be like. Meanwhile, Haskell interop with C is already usable.