Как я могу остановить Hint, библиотеку интерпретатора времени выполнения на Haskell, при сбое интерпретатора GHC? - PullRequest
0 голосов
/ 05 марта 2012

Как я могу остановить Hint, библиотеку интерпретатора времени выполнения на Haskell, от сбоя интерпретатора GHC? Он выдает «Ошибка шины», «Недопустимая инструкция» или «Ошибка сегментации», когда я пытаюсь загрузить модуль, использующий его, в интерпретатор GHC. Это серьезная проблема, а не просто раздражение, потому что она также вызывает сбой моего приложения, когда я использую подсказку для загрузки кода, который сам использует подсказку. Я подозреваю, что это связано с большим количеством библиотек, которые Hint тянет при компоновке.

Я использую Mac OS 10.6.8, GHC версия 7.0.4

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

К сожалению, вы не можете это остановить. API ghc, используемый как ghci, так и подсказкой, не может обрабатывать некоторые параллельные варианты использования, в основном те, которые связаны с загрузкой пакетов и модулей в текущий контекст. В API GHC слишком много глобального состояния.

0 голосов
/ 05 марта 2012

Я решил эту проблему путем явной передачи функции всему загруженному коду.

Например, вместо выполнения

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 ...
...