hint
Programımla kullanmak için Haskell'de eklentiler yazabilmem için bir Haskell tercümanı yerleştirmeyi umuyordum . Yürütülebilirlerim için tüm Haskell platformunu göndermek istemiyorum.
Normalde, Haskell yürütülebilir dosyaları oldukça bağımsızdır. Örneğin, bunu silmek PATH
soruna neden olmaz:
$ PATH=. Hello
Hello world
Ancak, runInterpreter
silerseniz bomba kullanan basit bir test programı 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"
Çalışması için ortamda hangi kitaplıkların veya yürütülebilir dosyaların bulunması gerekir?
otool
fazla yol göstermez:
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)
İçin test kodu TryHint
fazla bir şey yapmaz:
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]
Sadece çalışma zamanında yorumlanacak f
bir işleve bağlanır Test.hs
. Test.hs
buna benzer:
module Test where
f :: Int -> Int
f x = x + 1
PATH=.
, Prelude için arayüz dosyaları ve geçiş yaptığı her şey, gerçek kütüphane dosyaları gibi , ondan saklanmadığınız birçok kaynağa bağlıdır. base ve ghc-prim ve integer-gmp ve GHC settings
dosyası. (Temel olarak, her şey kurulumunuz için /usr/lib/ghc
veya eşdeğer dizinin altına kurulur .)
PATH= ./TryHint
her şey yolunda gidiyor: birkaç sayı yazdırıyor, sonra çıkıyor. Ayrıca GHC 7.8.3 kullanıyorum. Nasıl inşaTryHint
ediyorsunuz?