Я надеялся внедрить интерпретатор Haskell с помощью hint
, чтобы я мог писать плагины в Haskell для использования с моей программой. Я не хочу, чтобы я отправлял эту проклятую платформу Haskell для своих исполняемых файлов. Обычно исполняемые файлы Haskell довольно автономны. Например, стирая PATH
не вызывает проблему:Как отправить исполняемый файл с помощью Language.Haskell.Interpreter?
$ 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
Я не могу воспроизвести эту проблему. Когда я запускаю 'PATH =./TryHint', все идет гладко: он печатает несколько цифр, а затем выходит. Я также использую GHC 7.8.3. Как вы строите «TryHint»? –
Как насчет 'PATH =. TryHint' (обратите внимание, где находится пробел)? Исполняемый «TryHint» должен находиться в текущем рабочем каталоге. – ErikR
@ user5402 Я попробовал оба. Они точно такие же. –