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
나는 그 오류로 무슨 일이 일어나고 있는지 전혀 모른다. 어쨌든 GHC는
—
Reid Barton
PATH=.
Prelude의 인터페이스 파일과 전 이적으로 가져온 모든 것, 실제 라이브러리 파일과 같이 숨기지 않는 많은 리소스에 달려있다. base 및 ghc-prim 및 integer-gmp 및 GHC settings
파일. (기본적으로 모든 것이 설치되어 /usr/lib/ghc
있거나 그에 상응하는 디렉토리에 설치되어 있습니다.)
@MichaelFox는 GHC API를 정적으로 연결하는 것이 GHC 7.8에 도입 된 새로운 동적 링커와 작동하지 않습니다. (대화식 코드 실행에는 동적 라이브러리가 필요합니다)
—
bennofs
@bennofs 댓글을 거의 바꾸지 않으면 거의 답이 될 것 같습니다!
—
sclv
PATH= ./TryHint
모든 것이 순조롭게 진행됩니다. 몇 개의 숫자를 인쇄 한 다음 종료됩니다. 나는 또한 GHC 7.8.3을 사용하고 있습니다. 어떻게 지내고TryHint
있습니까?