Как отправить исполняемый файл с Language.Haskell.Interpreter?

Я надеялся встроить интерпретатор Haskell, используя hint, чтобы я мог написать плагины на Haskell для использования с моей программой. Я не хочу отправлять всю платформу Haskell для моих исполняемых файлов.

Обычно исполняемые файлы Haskell довольно автономны. Например, стирание PATH не вызывает проблем:

$ PATH=. Hello
Hello world

Тем не менее, простая тестовая программа с использованием runInterpreter бомб, если я стираю 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"

Какие библиотеки или исполняемые файлы должны быть доступны в среде, чтобы он мог работать?

otool не дает большого руководства:

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)

Тест код для TryHint мало что делает:

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]

Он просто связывает f с функцией из Test.hs для интерпретации во время выполнения. Test.hs выглядит так:

module Test where
f :: Int -> Int
f x = x + 1
136
задан Aaron Hall 1 September 2018 в 15:56
поделиться