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.