Завел таки этот долбанише
Сopilot. Ну вуду, что тут еще можно сказать.
1) Скачать cabal
2) Запустить cabal, разобраться с тем, чего он от меня хочет. А хотел он чтобы я скачал список пакетов с hackage и чтобы у него был конфиг (конфиг-то он сам создает, в user/AppData/cabal/config)
3) Разобраться почему он ложит хер на опции в конфиге. Пока до меня дошло, что в созданном конфиге большинство опции закоментарено -- и это надо убрать чтобы опции работали, я перекопал и ghc-pkg, и кэш пакетов и прочая и прочая и прочая, команду же удаления пакетов так и не нашел.
3) Загрузить оный копилот в ghci. Задолбался искать нужную команду. Вывод :? показывает тыкву, т.к. на один экран не помещается, а скролла на предыдущие экраны в винде нет.
Офигенно логичное действие :m + Language.Copilot
Хорошо, что глянул неймспейс этого дела, потому как неоткуда это не следует.
4) Загрузить пример fib, который там приведен первым. Очевидно, он нихера не грузится и не компилирует, т.к. к этому примеру еще идет 20 строк импорта модулей, которые они "случайно" не привели. Чтобы загрузился - нужно посмотреть
http://github.com/leepike/Copilot/raw/master/Language/Copilot/Examples/Examples.hs и вытащить оттуда эти импорты в пример.
команды тоже логичные
:cd f:\
:l fib.hs
5) выполнить compile fib "fib" baseOpts. Подывыцца бредовому сообщению
*Main Language.Copilot> compile fib "fib" baseOpts
Trying to create (if missing) ./ ...
*** Exception: CreateDirectory ".": permission denied (Access is denied.)
6) переместить fib.hs в папку на уровень ниже, перейти туда и повторить
:cd f:\2\
:l fib.hs
подывыцца еще одному бредовому сообщению:
*Main Language.Copilot> compile fib "fib" baseOpts
Trying to create (if missing) ./ ...
Compiling Copilot specs to C ...
Generated fib.c and fib.h
Moving fib.c and fib.h to ./ ...
*** Exception: .\.copyFile3164.tmp: copyFile: permission denied (Access is denied.)
7) Обнаружить что файлы fib.c и fib.h оно таки создало, в отличие от шага 5
8) Собрать их gcc, который идет в комплекте хаскеля. Указав полный путь к gcc, само собой, тут вам не линукс. Собралось.
9) Запускаем
a.exe 10 -> нормально, последовательность фибоначчи
a.exe 120 -> бред сивой кобылы
a.exe 50 -> бред сивой кобылы
a.exe 47 -> последовательность фибоначчи
Смысл? Переполнение 32 битов после 47 числа фибоначчи. Офигенно валидная программа получилась.