Wie kann ich Haskell-Funktionen mit Typsignaturen höherer Ordnung aus C# (DLLImport) verwenden und aufrufen, wie...
double :: (Int -> Int) -> Int -> Int -- higher order function
typeClassFunc :: ... -> Maybe Int -- type classes
data MyData = Foo | Bar -- user data type
dataFunc :: ... -> MyData
Was sind die entsprechenden Typsignaturen in C#?
[DllImport ("libHSDLLTest")]
private static extern ??? foo( ??? );
Zusätzlich (weil es vielleicht einfacher ist): Wie kann ich "unbekannte" Haskell-Typen in C# verwenden, so dass ich sie zumindest weitergeben kann, ohne dass C# einen bestimmten Typ kennt? Die wichtigste Funktionalität, die ich richtig wissen muss, ist eine Typklasse (wie Monad oder Arrow) zu übergeben.
Ich weiß bereits wie man eine Haskell-Bibliothek zu einer DLL kompiliert und in C# verwenden, allerdings nur für Funktionen erster Ordnung. Ich bin mir auch bewusst, dass Stackoverflow - Aufrufen einer Haskell-Funktion in .NET , Warum ist GHC nicht für .NET verfügbar? y hs-dotnet , wo ich KEINE Dokumentation und Beispiele (für die Richtung C# zu Haskell) gefunden habe.