tutorial online funciones empresa descargar constructora company haskell

online - Cómo enviar un ejecutable con Language.Haskell.Interpreter?



haskell pdf (1)

Enviar un ejecutable con Language.Haskell.Interpreter parece ir perfecto con la forma en que lo has mostrado. Debe establecer su PATH en el script que desea ejecutar.

Y a modo de nota al margen, tal como lo menciona @bennofs en los comentarios, la vinculación estática de la API de GHC no funciona con el nuevo enlazador dinámico introducido en GHC 7.8, (la ejecución de código interactivo ahora requiere bibliotecas dinámicas).

Esperaba insertar un intérprete de Haskell usando una hint para poder escribir complementos en Haskell para usar con mi programa. No quiero tener que enviar la maldita plataforma Haskell para mis ejecutables. Normalmente, los ejecutables de Haskell son bastante autónomos. Por ejemplo, borrar la PATH no causa un problema:

$ PATH=. Hello Hello world

Sin embargo, un programa de prueba simple usando runInterpreter bombs si runInterpreter la PATH :

$ PATH=. TryHint GhcException "panic! (the ''impossible'' happened)/n (GHC version 7.8.3 for x86_64-apple-darwin):/n/tDynamic linker not initialised/n/nPlease report this as a GHC bug: http://www.haskell.org/ghc/reportabug/n"

¿Qué bibliotecas o ejecutables deben estar disponibles en el entorno para que funcione?

otool no da mucha orientación:

otool -L TryHint TryHint: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/local/lib/libgmp.10.dylib (compatibility version 13.0.0, current version 13.0.0)

El código de prueba para TryHint no hace mucho:

import Control.Monad import Language.Haskell.Interpreter main = do f <- runInterpreter $ loadModules ["Test"] >> setTopLevelModules ["Test"] >> interpret "f" (as :: Int -> Int) case f of Left e -> print e Right r -> mapM_ (print . r) [1..10]

Simplemente une f a una función en Test.hs para ser interpretada en tiempo de ejecución. Test.hs ve así:

module Test where f :: Int -> Int f x = x + 1