Использование типов Haskell высшего порядка в C #

Как я могу использовать и вызывать функции Haskell с сигнатурами типов высшего порядка из C # (DLLImport), например ...

double :: (Int -> Int) -> Int -> Int -- higher order function

typeClassFunc :: ... -> Maybe Int    -- type classes

data MyData = Foo | Bar              -- user data type
dataFunc :: ... -> MyData

Каковы соответствующие сигнатуры типа в C #?

[DllImport ("libHSDLLTest")]
private static extern ??? foo( ??? );

Дополнительно (потому что это может быть проще): Как я могу использовать "неизвестные" типы Haskell в C #, чтобы я мог по крайней мере передавать их без знания C # какого-либо конкретного типа? Самая важная функциональность, которую мне нужно знать, - это передача класса типа (например, Monad или Arrow).

Я уже знаю , как скомпилировать библиотеку Haskell в DLL и использовать ее в C #, но только для функции первого порядка. Мне также известно о Stackoverflow - вызов функции Haskell в .NET , Почему GHC недоступен для .NET и hs-dotnet , где я не нашел НИКАКОЙ документации и примеров (для направления C # на Haskell).

27
задан Community 23 May 2017 в 12:25
поделиться