2011-02-14 17 views
7

Digamos que tengo una función Haskell añadir en math.hs¿Cómo puedo ejecutar mis funciones Haskell a través de Java

¿Cómo puedo ejecutar el añadir función a través de un programa Java y almacenar el resultado como ¿una variable?

Tal vez algo como lo siguiente:

public int runHaskell(String haskellFile) { 
    int output; 
    //run add function from file 'math.hs' and store result to output 
    return output; 
} 

(Si es necesario también tengo acceso al archivo de objeto: math.o y el archivo intérprete math.hi, así como el ejecutable principal .exe)

+0

Esto podría implicar algunos trucos ingeniosos con JNI. Tengo curiosidad por ver cuál es la respuesta. – templatetypedef

+1

@templatetypedef No veo cómo esto sería diferente de usar JNI con C (GHC puede generar código intermedio C) –

+0

@Rafe Kettler- Es cierto, pero las convenciones de nomenclatura requeridas por JNI y el hecho de que todos los argumentos tienen que ser tipos específicos probablemente requeriría que usted construya una biblioteca C "trampolín" que luego se vincularía con el código Haskell. – templatetypedef

Respuesta

4

La manera fácil (pero torpe):.

Runtime.exec()

Luego puede escuchar la salida del programa Haskell y luego analizar el resultado.

O bien, puede escribir un envoltorio pequeño para JNI que llame directamente a su material de Haskell.

+0

Hmm. ¿Cómo escucho la salida después de usar exec() en el programa haskell ejecutable? – BinRoot

+2

@Nick: 'exec' devuelve un objeto' Process', que puede usar para obtener la secuencia en la que el proceso escribe su salida. –

Cuestiones relacionadas