ฉันหวังว่าจะใช้ล่าม Haskell hint
เพื่อที่ฉันจะได้เขียนปลั๊กอินใน Haskell เพื่อใช้กับโปรแกรมของฉัน ฉันไม่ต้องการจัดส่งแพลตฟอร์ม Haskell ทั้งหมดสำหรับโปรแกรมปฏิบัติการของฉัน
โดยปกติ executables ของ 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
PATH=.
เช่นไฟล์อินเตอร์เฟสสำหรับ Prelude และทุกสิ่งที่นำเข้าโดยผ่าน base และ ghc-prim และ integer-gmp และsettings
ไฟล์GHC (โดยพื้นฐานแล้วทุกอย่างที่ติดตั้งภายใต้/usr/lib/ghc
หรือไดเรกทอรีที่เทียบเท่าสำหรับการติดตั้งของคุณ)
PATH= ./TryHint
ทุกอย่างเป็นไปอย่างราบรื่น: มันพิมพ์ตัวเลขออกมาไม่กี่ตัว ฉันใช้ GHC 7.8.3 ด้วย คุณเป็นTryHint
อย่างไรบ้าง