hint
私のプログラムで使用するプラグインをHaskellで作成できるように、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
また、OSXに固有である可能性が高いと考えています。エラーメッセージに記載されているように、GHCのトラッカーでチケットを開くことをお勧めします(結局、不可能が発生しただけです)。
—
MasterMastic、2015年
私はそのエラーで何が起こっているのか分かりませんが、いずれの場合も、GHCは
—
Reid Barton
PATH=.
、Preludeのインターフェースファイルや推移的にインポートされるすべてのファイル、実際のライブラリファイルなど、非表示にしていない多くのリソースに依存していますbase、ghc-prim、integer-gmp、およびGHC settings
ファイル。(基本的に、インストールされているもの、/usr/lib/ghc
またはインストールに相当するディレクトリ。)
@HCH APIを静的にリンクする@MichaelFoxは、GHC 7.8で導入された新しい動的リンカーでは機能しません。(インタラクティブコードの実行には、動的ライブラリが必要になりました)
—
bennofs
@bennofs少し言い換えれば、コメントはほぼ回答のようです!
—
sclv 2015
PATH= ./TryHint
すべてがスムーズに進みます。いくつかの数字を出力してから終了します。GHC 7.8.3も使用しています。どのように構築していTryHint
ますか?