metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-09-23 07:30 am

Доказательство программ? Поедание грибов!

Завел таки этот долбанише С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 числа фибоначчи. Офигенно валидная программа получилась.

[identity profile] freiksenet.livejournal.com 2010-09-23 07:53 am (UTC)(link)
Ну ведь не пятница же.

[identity profile] volodymir-k.livejournal.com 2010-09-23 07:58 am (UTC)(link)
> скролла на предыдущие экраны в винде нет

ха-ха три раза. А ведь есть консоль и кроме ФАР-а. И там можно размеры буфера выставить, у меня по умолчанию 3000 х 300.

> Переполнение 32 битов

Думаю, неправилно что-то с опциями вызова gcc, ибо "over Word 64s".

[identity profile] plumqqz.livejournal.com 2010-09-23 08:17 am (UTC)(link)
Скажите, а как будет по-белорусски: "подывыцца еще одному бредовому сообщению"?

И второй вопрос - а зачем Вы вообще все это проделываете?

[identity profile] yantayga.livejournal.com 2010-09-23 08:20 am (UTC)(link)
Виват извращенцам!
У меня Cabal.exe тоже с глюками работал. Меня это достало и я все ставил через runhaskell Setup.hs + <куча опций ручками>, запихав все в батники.

[identity profile] zhacka (from livejournal.com) 2010-09-23 08:55 am (UTC)(link)
Может стоит на atom (http://github.com/tomahawkins/atom) взглянуть? По крайней мере автор атома утверждает (http://tomahawkins.org/), что они использовали его (и еще какое-то интересное гикство, как раз смотрю какое) в Eaton'е.

P.S.: И да, этот copilot основан на атоме.

set HOME=f:\home\metaclass; set PATH=куданадо;

[identity profile] geovit.livejournal.com 2010-09-23 09:32 am (UTC)(link)
Ну и Haskell Platform соответственно, по мне, так там нет особого гемора с Cabal. Даже такому быдлоадмину как я, вполне удавалось такого рода мелочь компилировать.

[identity profile] palm-mute.livejournal.com 2010-09-23 11:57 am (UTC)(link)
>Смысл? Переполнение 32 битов после 47 числа фибоначчи. Офигенно валидная программа получилась.

А авторы обещали бороться с целочисленным переполнением? Я не понял, какую задачу они решали, "страшно далеки они от народа", т.е. от меня, но в статье про переполнение ни слова.