Haskell has good capabilities for accessing "foreign" data structures (without serialization), and so does C#. A good common denominator is probably COM, because C# can treat COM objects almost like native objects. I see there's a package for the Haskell side.