如何在ghci 7.8中加载.dyn_o?

时间:2014-07-09 15:54:10

标签: haskell ghci

我在haskell-cafe上问了这个,但是还没有回复,所以也许没有足够的人使用7.8。也许现在有更多的人在阅读堆栈溢出:

我最近升级到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状态也会混淆,例如我点击了逃生k以获得前一行,但随后它又自发地重新进入插入模式。它在大约15秒内保持笨拙和尴尬,然后稍微恢复正常。在加载所有字节码之后,它几乎就像在后台仍在进行大量的工作一样,并且持续GC冻结。但是它可以做些什么呢?字节码已加载,我还没有要求它做任何事情!我不知道这是7.8的新内容,还是加载字节码而不是二进制代码的结果。

1 个答案:

答案 0 :(得分:0)

原来这是一个已知的ghc错误:

https://ghc.haskell.org/trac/ghc/ticket/8736

修复方法是使用-dynamic进行编译,而不是使用-dynamic编译。