2014-07-09 7 views
1

나는 haskell-cafe에서이 질문을했으나 아직 응답이 없으므로 충분한 사람들이 7.8을 사용하고 있지 않을 수 있습니다. 아마도 더 많은 사람들이 스택 오버플로를 읽고 있습니다.ghci 7.8에서 .dyn_o를로드하는 방법?

최근에 7.8.2로 업그레이드되었으며 바보 같은 질문이 있습니다. ghci를 사용하여 컴파일 된 모듈을로드하는 방법은 무엇입니까? 나는이 때 :

% cat >T.hs 
module T where 

x :: Int 
x = 42 
% ghc -c -dynamic-too T.hs 
% s 
T.dyn_hi T.dyn_o T.hi  T.hs  T.o 
% ghci 
GHCi, version 7.8.2: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Loading package filepath-1.3.0.2 ... linking ... done. 
Prelude> :l T 
[1 of 1] Compiling T    (T.hs, interpreted) 
Ok, modules loaded: T. 
*T> 

그것은 여전히 ​​.dyn_o 이 존재하더라도, 해석 파일을로드합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

이 x86-64에 OS X의에

관련이있을 수 있습니다 한 가지가있다. 현재 해석되는 모든 것을로드하기 때문에 수백 개의 모듈이로드 될 때 입력이 매우 느려진다는 것을 알게되었습니다. 또한 haskeline 상태가 혼란스러워집니다. 나는 이전 줄을 얻기 위해 escape k를 친다. 그러나 그것은 자연스럽게 삽입 모드로 다시 돌아 간다. 보통의 상태로 약간 돌아 오기 전에 약 15 초 동안 약하고 어색함을 유지합니다. 마치 모든 바이트 코드를로드 한 후에도 일정한 GC 고정으로 백그라운드에서 계속 많은 작업을 수행하는 것처럼 보입니다. 그러나 그것은 어떤 일을 할 수 있습니까? 바이트 코드가로드되고 아직 아무것도 할 것을 요청하지 않았습니다! 이것이 7.8에 새로운 것인지 또는 바이너리 대신 바이트 코드를로드 한 결과인지는 알 수 없습니다.

+0

'-fobject-code'로'ghci'를 시작하면 기존 파일을로드합니다. 이것은 Windows에 있으므로 osx에서 작동하지 않을 수 있습니다. – user2407038

+0

실제로 작동하지만, 그 자리에서 모든 것을 다시 컴파일하여 작동하지만 여전히 dyn_o를로드하지 않습니다. 따라서 200 개의 모듈을 가지고 있다면 꽤 오래 걸립니다! 흥미롭게도, 대부분 입력 지연을 없애지 만 전체적으로는 그렇지 않습니다. 그래서 7.6에서 여전히 회귀가 있습니다. –

답변