Рассмотрим следующие тривиальные модули:
module Fail1 where
identity x = x
module Main where
import Fail1
main = print (identity 7)
Я сохраняю их как Fail1.hs
и Fail2.hs
. Если я пытаюсь запустить эту программу, все хорошо:
> runhaskell Fail2
7
Но взгляните на это:
> ghc -O2 --make Fail1
[1 of 1] Compiling Fail1 ( Fail1.hs, Fail1.o )
> runhaskell Fail2
_
Теперь программа зависает навсегда, ghc.exe
потребляет 100% одного ядра процессора. Какого черта?
Это становится лучше, хотя:
> ghc -O2 --make Fail2
[2 of 2] Compiling Main ( Fail2.hs, Fail2.o )
> runhaskell Fail2
Access violation in generated code when reading 0xffffffffffffffff
Attempting to reconstruct a stack trace...
Frame Code address
* 0x71fdd90 0x3d7ce28 C:\Program Files\Haskell Platform\8.6.3\bin\ghc.exe+0x397ce28
Э... Ват?
Как ни странно, если я просто запускаю Fail2.exe
сам, он работает отлично:
> Fail2
7
Что, черт возьми, происходит? Я схожу с ума? Это действительно, действительно похоже на какую-то ошибку GHC. Кто-нибудь еще может воспроизвести это, или это просто моя система?
> ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.3
(Ничего себе, хорошо. Это действительно не отображает много информации. Я использую 64-битную Windows 7 Pro, и я считаю, что я установил 64-битную сборку GHC.)