Sie müssen Haskell-Code schreiben, um diese Datenstrukturen in solche zu maskieren, die Sie in Haskell verwenden können. Das c2hs Tool ist sehr hilfreich in dieser Hinsicht: http://hackage.haskell.org/package/c2hs
Während das Werkzeug erscheint für den Aufruf von C von Haskell gestaltet wird, ist es auch sehr nützlich für das Gegenteil in einem gewissen Sinne ist - ermöglicht es Ihnen, marshall Komplex C Typen in Haskell-Typen. Da die von Ihnen bereitgestellten Funktionen C-Typen annehmen müssen (in der Regel Zeiger auf komplexe Strukturen), können Sie A) geeignete C-Strukturen konstruieren und B) die Funktionen von c2hs verwenden, um diese Strukturen in Haskell in Ihren exponierten Funktionen zu marshallen damit du mit ihnen arbeiten kannst.
Beachten Sie auch, dass mit c2hs-Stil generierten Tools, müssen Sie nicht alles marshall. Sie können nur Accessoren generieren, um in die Teile von C-Datenstrukturen zu schauen, die Ihnen wirklich wichtig sind.
Wie wäre es mit IPC mit einem [UNIX-Domain-Socket] (https://en.wikipedia.org/wiki/Unix_domain_socket)? –
IPC muss auf beiden Seiten übertragen werden. Das ist die Art von Lösung, aber es erfordert immer noch viel Arbeit und ist nicht effizient, wie es sein könnte. – remdezx
Ich habe es nicht versucht, aber es könnte nützlich für Sie sein: https://github.com/wavewave/fficxx – Yuras