Saya berharap untuk menyematkan juru bahasa Haskell hintsehingga saya dapat menulis plugin di Haskell untuk digunakan dengan program saya. Saya tidak ingin mengirimkan seluruh platform Haskell untuk file executable saya.
Biasanya, file executable Haskell cukup mandiri. Misalnya, menghapus PATHtidak menimbulkan masalah:
$ PATH=. Hello
Hello world
Namun, program uji sederhana menggunakan runInterpreterbom jika saya menghapus 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"
Library atau executable apa yang harus tersedia di lingkungan agar dapat berfungsi?
otool tidak memberikan banyak petunjuk:
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)
Kode tes untuk TryHinttidak berbuat banyak:
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]
Itu hanya mengikat fke suatu fungsi Test.hsuntuk diinterpretasikan pada saat run-time. Test.hsterlihat seperti ini:
module Test where
f :: Int -> Int
f x = x + 1
PATH= ./TryHintsemuanya berjalan lancar: mencetak beberapa angka, lalu keluar. Saya juga menggunakan GHC 7.8.3. Bagaimana Anda membangunTryHint?