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] metaclass.livejournal.com 2010-09-23 08:02 am (UTC)(link)
Да, из обычной консоли можно буфер подкрутить.

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

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

[identity profile] nealar.livejournal.com 2010-09-23 08:35 am (UTC)(link)
Странный вопрос. Зачем вообще грибы едят?

[identity profile] plumqqz.livejournal.com 2010-09-23 08:38 am (UTC)(link)
Это смотря какие.

[identity profile] nealar.livejournal.com 2010-09-23 08:47 am (UTC)(link)
Думаю, аффтар имел в виду семиланцеату.

[identity profile] plumqqz.livejournal.com 2010-09-23 08:49 am (UTC)(link)
Не, я таких не знаю. Лисички там, белые и проч. знаю, а это все - дьяволятина.

[identity profile] metaclass.livejournal.com 2010-09-23 09:32 am (UTC)(link)
За белорусским - к белнетмону, мне хватает хаскеля чтобы сойти с ума.
А звчем - меня интересует тема валидных по построению программ, т.к. тестировать некому, а софт обслуживать в случае багов мне лень.

[identity profile] plumqqz.livejournal.com 2010-09-23 09:36 am (UTC)(link)
А звчем - меня интересует тема валидных по построению программ, т.к. тестировать некому, а софт обслуживать в случае багов мне лень.

Судя по посту, это движение в каком-то ложном направлении :-)

[identity profile] clayrat.livejournal.com 2010-09-23 01:18 pm (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. Даже такому быдлоадмину как я, вполне удавалось такого рода мелочь компилировать.

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

[identity profile] geovit.livejournal.com 2010-09-23 09:36 am (UTC)(link)
Правда. уже всё снёс и забыл, потому как lisp прикольнее, Еmacs понастраивать можно.

[identity profile] nealar.livejournal.com 2010-09-23 09:40 am (UTC)(link)
Разве оно по умолчанию не считает, что HOME="X:\Documents and Settings\metaclass" ?
И таки проблемы с кабалой бывают. Самая частая - отсутствие ./configure .

[identity profile] geovit.livejournal.com 2010-09-23 10:17 am (UTC)(link)
Считает, просто в нём неудобно работать, туда даже винда сама не пишет ничего, кроме ntuser.*.
Остальное всё в подкаталогах держит, девелоперсгайд, все-таки.

Были, наверное, проблемы, но по мелочи. А так, конечно, игрушечное оно всё пока.

[identity profile] nealar.livejournal.com 2010-09-23 10:25 am (UTC)(link)
Неудобно, но я уже туда попихал всякое .ssh и прочее. :)

На *NIX вполне реальная система пакетов, работает и не жужжит. На винде - кой-чего ставится влёт, кой-чего - пошаманив, а некоторые пакеты интересно выступают: есть в платформе какой-нибудь xyz-0.7.5.3, а оно тянет xyz-0.7.5.4, с ним собирается, и в рантайме отваливается с ошибкой загрузки DLL. Если стукнуть молотком объяснить, что надо использовать xyz-0.7.5.3, то всё живёт.
Хотя до энтерпрайзности кабалу ещё пилить и пилить.

[identity profile] geovit.livejournal.com 2010-09-23 11:52 am (UTC)(link)
О, вот-вот, именно это и вылезало.

[identity profile] nealar.livejournal.com 2010-09-23 12:22 pm (UTC)(link)
Причём, я не понял магии: почему у xyz-0.7.5.3, которая идёт с платформой, с DLL всё в порядке, а xyz-0.7.5.4 собирается без ошибок, но DLL получается косая.

[identity profile] geovit.livejournal.com 2010-09-23 12:45 pm (UTC)(link)
Когда я пытался похожую проблему разрешить, я даже требуемый номер версии менял, как у мозилловских расширений при апгрейде мозиллы, но там какие-то вложенные зависимости - одному разрешишь версией на последнюю единичку меньше, начинает вопить следующий по иерархии пакет. Я плюнул.

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

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

[identity profile] metaclass.livejournal.com 2010-09-23 12:06 pm (UTC)(link)
Как минимум, лучше бы прога свалилась с исключением или ошибкой, чем возвращала бред.