Vorrei utilizzare una libreria esterna, RDFox, in un progetto Haskell.Come utilizzare una DLL in un progetto Haskell?
Contesto: Sto lavorando su Windows e Linux, entrambi a 64 bit, utilizzando GHC 7.10 e stack. RDFox è programmato in C++. Le librerie condivise di RDFox (.dll, .so) possono essere scaricate con i wrapper Java e Python.
Obiettivo: Vorrei riutilizzare le librerie compilate da RDFox (.dll, .so) nel mio progetto in Haskell, quindi ho bisogno di creare un wrapper per Haskell RDFox.
Problemi: Essendo relativamente nuovo per Haskell, ho difficoltà a sapere da dove iniziare. Ho trovato diverse pagine sull'argomento (da Haskell wiki e StackOverflow), ma il flusso di lavoro e la configurazione non mi sono chiari.
Domande: vorrei sapere:
- Come configurare stack e cabala di utilizzare librerie esterne, per costruire su Windows o Linux (macchine differenti, stesso repository).
- Come configurare GHCi per i test interattivi su questa libreria esterna.
- È la traduzione del wrapper Python per Haskell il modo migliore per andare? Vorrei evitare l'analisi del codice RDFox C++.
Per prima cosa è probabilmente necessario creare un wrapper C-export per l'API C++. – alternative
Non è possibile creare direttamente il wrapper in Haskell? Voglio dire, se devo creare un wrapper C e poi uno Haskell, qual è il punto? –
Le convenzioni di denominazione in C++ sono molto più complicate rispetto a C. Non credo che FFI supporti il nome di mangling per cose non esterne a C. – alternative