2012-03-10 9 views
13

Quali sono le soluzioni correnti per l'interoperabilità Haskell/Java? Ho visto il giornale su Lambada di Meijer e Finne. Esiste un progetto chiamato GCJNI, ma sembra essere defunto: i collegamenti ad esso sono interrotti. C'è qualcosa che si potrebbe usare fuori dalla scatola?Interoperabilità Java Haskell

+2

correlati: http://stackoverflow.com/questions/2141148/best-way -to-call-haskell-functions-from-inside-java http://stackoverflow.com/questions/7961335/calling-haskell-from-java-with-c-in-between http://stackoverflow.com/questions/4988598/how-can-i-run-my-haskell-functions-through-java –

+1

Non esattamente Haskell, ma quasi - http://code.google.com/p/frege - e viene compilato in Java – Ingo

risposta

9

Utilizzando lo GHC FFI è possibile creare un shared library che esporta le funzioni da Haskell land, che Java può quindi utilizzare tramite JNA. In alternativa puoi prendere questa stessa libreria condivisa e scrivere del codice di colla per esporlo attraverso JNI per un'interfaccia più "Java-y". Potresti anche diventare pazzo ed esporre abbastanza JNI attraverso la FFI a Haskell per ottenere davvero il tuo Java (questo è un po 'l'approccio che la carta Lambada prende).

Credo che la condivisione di Haskell lib + JNA sarebbe l'approccio più semplice e più semplice. Ciò presuppone che sia più semplice esporre alcune funzioni di Haskell a Java, piuttosto che esporre alcuni oggetti Java a Haskell. Per alcune informazioni sull'orientamento, potresti essere interessato a Salsa, che è C#, non Java, ma i principi nella progettazione delle interfacce potrebbero essere di interesse.

+2

La parte davvero difficile è l'automazione della generazione di interfacce Haskell dal codice Java. C'è qualche progresso in questo? –