Faccio un ampio uso di questo compilando haskell condivise libs che vengono chiamate al di fuori di Haskell.
solito i compiti da svolgere sarebbe quello di
- creare le dichiarazioni di esportazione corretta stranieri
- creare istanze memorizzabili per eventuali tipi di dati che è necessario schierare
- creare le strutture C (o strutture nella lingua stai usando) per leggere queste informazioni
- poiché non voglio inizializzare manualmente l'haskell RTS, aggiungo il codice di inizializzazione/terminazione alla stessa lib. (dllmain in windows __attribute__ ((costruttore)) su unix)
- poiché non ne ho più bisogno, creo un file .def per nascondere tutte le funzioni di chiusura e rts dall'essere nella tabella di esportazione (windows)
- usa GHC per compilare tutto insieme
Questi compiti sono piuttosto robotizzati e strutturati, a un certo punto potresti scrivere qualcosa per automatizzarli. Infatti quello che uso io per fare questo è uno strumento che ho creato che esegue il tracciamento delle dipendenze sulle funzioni che hai contrassegnato per essere esportato, e le avvolgerà e compilerà la lib condivisa per te, oltre a darti le dichiarazioni in C/C++.
(purtroppo, questo strumento non è ancora in hackage, perché c'è qualcosa che ho ancora bisogno di risolvere il problema e prova molto di più prima che io sento a mio agio facendo così)
Tool è disponibile qui http://hackage.haskell.org/package/Hs2lib-0.4.8
http://mldonkey.sourceforge.net/Main_Page – grettke
http://coherentpdf.com/blog/?tag=ocaml – grettke
Caveat (http://www-list.cea.fr/labos/gb/LSL/ caveat/index.html) è uno strumento di verifica per C embedded critici scritti principalmente in C++, ma che utilizza OCaml come linguaggio di scripting (un diario di Caml generato durante una sessione interattiva può essere compilato e collegato a Caveat per essere riprodotto in qualsiasi momento) . –