Avrai bisogno di scrivere il codice haskell per mettere in ordine quelle strutture dati in quelle che puoi usare in Haskell. Lo strumento c2hs è molto utile a questo proposito: http://hackage.haskell.org/package/c2hs
Mentre lo strumento appare essere progettato per chiamare C da Haskell, è anche molto utile per il contrario in un certo senso - permette di marshall complesso C tipi in tipi Haskell. Dal momento che le funzioni che esponi dovranno prendere i tipi C (tipicamente puntatori a strutture complesse), allora puoi A) costruire strutture C appropriate, e B) usare le funzioni fornite da c2hs per poi organizzare queste strutture in Haskell nelle tue funzioni esposte , così puoi lavorare con loro.
Si noti inoltre che con gli strumenti in stile c2hs non è necessario eseguire il marshalling di tutto. Puoi solo generare degli accessor per dare un'occhiata alle parti delle strutture di dati C che ti interessano veramente.
Che dire di fare IPC con un [dominio UNIX socket] (https://en.wikipedia.org/wiki/Unix_domain_socket)? –
IPC ha bisogno di effettuare il marshalling su entrambi i lati. Questo è un qualche tipo di soluzione, ma richiede ancora molto lavoro e non è efficiente come potrebbe essere. – remdezx
Non l'ho provato, ma potrebbe essere utile per voi: https://github.com/wavewave/fficxx – Yuras