Idiomatische Verwendung von Haskell-fremden Typen?

9

Problem: Um von Haskell-Typen zu fremden Typen und zurück zu gelangen, ist eine Menge Standardcode erforderlich.

Angenommen, wir arbeiten mit der folgenden Haskell-Datenstruktur:

%Vor%

Um diese Datenstruktur in das Land von C zu bekommen, müssen wir ihr struct analoges betrachten:

%Vor%

Aber um eine solche Struktur in C von Haskell zu übergeben, müssen wir HS_DataStructure in folgendes umwandeln:

%Vor%

Dann müssen wir HS_Struct eine Instanz von Storable machen:

%Vor%

(Im obigen verwende ich hs2c Syntax).

Um nun zwischen HS_Struct und HS_DataStructure zu konvertieren, müssen wir die folgenden Hilfsfunktionen (!) verwenden:

%Vor%

Dies scheint eine wahnsinnige Menge an Standard zu sein, zwischen Haskell und C hin und her zu gehen.

Fragen

  1. Gibt es eine Möglichkeit, das obige Muster zu minimieren?
  2. Bei Haskell-Projekten, die eine große Menge an FFI beinhalten, ist es idiomatisch, einfach nachzugeben und hauptsächlich die C-Typen von Haskell zu verwenden (d. h. CInt , CString und so weiter)? Dies würde Ihnen zumindest die Mühe ersparen, zwischen den Typen hin- und herwechseln zu müssen.
George 18.12.2016, 00:31
quelle

0 Antworten

Tags und Links