2012-03-05 31 views
0

如何停止Hint,一個Haskell運行時解釋程序庫,導致GHC解釋程序崩潰? 當我嘗試將使用它的模塊加載到GHC解釋器中時,它給出了「總線錯誤」,「非法指令」或「分段錯誤」。這是一個主要問題,而不僅僅是一個煩惱,因爲當我使用提示加載本身使用提示的代碼時,它也會崩潰我的應用程序。我懷疑這與鏈接時大量的圖書館提示有關。如何停止Hint,一個Haskell運行時解釋程序庫,導致GHC解釋程序崩潰?

我使用Mac OS 10.6.8,GHC版本7.0.4

+0

這可能不是由於*數量*庫,但他們中的一個(問題可能與衝突另一個)。 – luqui 2012-03-05 04:23:06

回答

-2

我通過明確地將函數傳遞給所有加載的代碼來解決了這個問題。

例如,而不是做

module Go where 
import Run 

go :: IO() 
go = do 
    blah blah .... 
    runFile etc ... 

我做

module Go where 

go :: RunFile -> IO() 
go runFile = do 
    blah blah .... 
    run runFile etc ... 
+0

你能否詳細說明一下?我試圖從ghci運行這個http://hpaste.org/69213並得到相同的錯誤。我將如何去糾正它? – 2012-05-29 18:58:52

+0

@PhilipK你將不得不編譯你的代碼。我能夠解決我的問題的原因是我基本上使用提示來製作自己的解釋器,因此能夠從中暴露出「runFile」功能。 「ghci」不公開這樣的功能,所以我的工作是不可能的。儘管如此,您仍然可以編譯代碼並至少運行它。 – 2012-05-31 14:14:36

3

不幸的是,你不能停止。 ghci和hint使用的ghc api不能處理一些併發用例,主要是涉及將包和模塊加載到當前上下文中的情況。 ghc api中有太多的全局狀態。

+0

我很欣賞信息,但我真的不喜歡你如何關閉其他任何方法的可能性。 – 2012-03-05 15:39:03

+0

@ user990666您明確詢問了使用ghci中的提示。在ghc api得到改善之前,總是會出現它自己踩踏的情況。如果你給出了一個更具體的結構例子,我可以給出更具體的答案。 – Carl 2012-03-05 18:55:25