Sep. 23rd, 2010

metaclass: (Default)
Copilot
Из хаскелевого DSL генерируется код на С для встраиваемых систем. В данном случае - для контроллеров в самолетике.
Народ за гранты NASA занимается явным удовлетворением собственного любопытства.
metaclass: (Default)
Завел таки этот долбанише С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 числа фибоначчи. Офигенно валидная программа получилась.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 9th, 2025 05:43 am
Powered by Dreamwidth Studios