Эпический ад
Mar. 8th, 2010 10:37 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Написал таки кусок кодогенератора на F#. Сначала в лоб, просто конверсией моих типов в последовательность строк SQL запроса для создания таблиц, а потом мне резко разонравилось отсутствие разделения модели и представления и я прикрутил AST для SQL, заодно заменив выходной результат на string seq, то бишь IEnumerable<string>.
Завтра буду прикручивать AST для дельфей, если мне не откозлопитонируют мозг какой-нибудь срочно-капец-нужно-вчера хреновиной.
Теперь понимаю, чего
zabivator устроил хаскель-срач - когда над головой не висит чистота и ленивость, но есть discriminated unions, вывод типов и это дело корректно интегрировано в привычную среду, можно особо не задумываясь писать всякий мрак.
Но при этом однозначно начинать надо с хаскеля, а для F# - еще и дотнет знать, потому что иначе этот безумный бред понять затруднительно. Хаскель лаконичен, там те же самые идеи не заслоняются синтаксисом.
Завтра буду прикручивать AST для дельфей, если мне не откозлопитонируют мозг какой-нибудь срочно-капец-нужно-вчера хреновиной.
Теперь понимаю, чего
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Но при этом однозначно начинать надо с хаскеля, а для F# - еще и дотнет знать, потому что иначе этот безумный бред понять затруднительно. Хаскель лаконичен, там те же самые идеи не заслоняются синтаксисом.
no subject
Date: 2010-03-09 09:27 am (UTC)Отсутствие перегрузки по типам -- есть такое дело. Кстати, я шёл с C (до этого -- с осемблира), затем чуть поковырял C++, потом понял, что ocaml это то, что нужно, но вот тоже не хватало перегрузки. Кусал локти сначала. Потом как-то научился обходиться без неё. И только потом понял, что кое-где эмулируется вариантными типами, кое-где объектами, кое-где всякими deriving'ами.
Мутабельность и ленивость -- ок :)
Кстати, ленивость использовать так же, как в хаскеле, не стоит: например, кое-кто идиоматично пишет обработку потоков данных как функции над ленивыми списками, затем забывает голову списка в памяти и ловит ололо пыщ пыщ риальни.
Про венду -- чего там грустно с ocamlfind? У меня он работает чотко. Даже кучу других библиотек скомпилял, даже типа-дистр виндовый сделал.
GODI я тоже не смотрел, именно из-за того, что оно не умело под mingw работать в своё время.
Насчёт lwt же -- очень странно. Мой билд-скрипт для него (для довольно старого 1.1.0) состоит из "$MAKE && $MAKE install", правда вот зависимость от ocaml-ssl есть.
Процессы -- советую глянуть JoCaml, это даже интереснее ырланка (ибо типизация).
no subject
Date: 2010-03-09 09:37 am (UTC)Ой, а можно мануал, как мне получить на выходе omake + ocamlfind + ocaml + batteries? Под mingw, пожалуйста, и без cygwin!
И вообще просто шикарно - если ещё и с lwt
Под вендовый cmd? Если под bash - то какой - cygwin или таки MSYS?
ВОТ ЭТО НИХУЯ СЕБЕ ПРОСТИТЕ ЗА ВЫРАЖЕНИЯ ТИПИЗИРОВАННЫЙ ERLANG ПЫЩПЫЩПЫЩ!
О дааааааа, надо заценивать, если оно годное - то срочно OTP портировать под такое щастье!!!
no subject
Date: 2010-03-09 09:44 am (UTC)Зачем нужен неподдерживаемый omake когда есть ocamlbuild? ocamlfind just works. ocaml бинарный с сайта - без проблем. насчёт батареек не знаю. Вообщем "у меня всё работает". Покажи конкретную проблему.
no subject
Date: 2010-03-09 09:50 am (UTC)+ он мне больше ocamlbuild нравится.
Дальше, что значит "неподдерживаемый"? Разрабатывается аж с 2004 года, солидная история релизов и багфиксов, есть пакеты под все платформы, что с ним не так?
Ну вот я не смог собрать вместе ocaml, ocamlfind, omake под mingw так, чтобы они заработали.
Пришлось собирать всё тоже самое под cygwin, всё из сорцов.
+ вылезли грабли с camomile.
Когда попробую ещё раз попозже, и отпишусь про конкретные проблемы
no subject
Date: 2010-03-09 10:06 am (UTC)А зачем пересобирать ocaml и omake когда они в бинарниках есть? Конкретно в тулчейне проблем не должно быть, но в общем согласен - большинство камловых библиотек обычно не собираются с полпинка в каждом из портов (cygwin/mingw/msvc). Это легко понять так как кому охота всё это тестировать, а во-вторых повальная любовь к хитровывернутым bash-скриптам. Вот камлобилд тем и хорош что даёт некий общий базис и "из коробки".
no subject
Date: 2010-03-09 10:41 am (UTC)Как минимум, нужно чтобы ocamlfind смотрел "куда надо".
Подробно проблемы не помню, когда вернусь к этой теме - отпишусь подробней.
no subject
Date: 2010-03-09 10:10 am (UTC)Кроме того, ocamlbuild включён в дистрибутив окамла, что означает его кошерность (его будут допиливать, так или иначе).
no subject
Date: 2010-03-09 09:50 am (UTC)Но засада в том, что я вон попробовал своё оверблд на нетбуке завести, и что-то не завелось сходу (отвалилось в линковке с tcl/tk, но, чувствую, проблема глобальнее), и руки не доходили разобраться (как и сейчас не особо доходят, впрочем).
А у одного знакомого вроде как завелось замечательно, да и на локально-доступных мне компах проблем не замечал. Так что стоит попробовать, вот внешние зависимости (если не страшно, то тривиальная инструкция по сборке там рядом).
Сборку окамла падвенду осуществляю msys'овским башем.
Насчёт эрланга -- агаа :) Но там не всё так идеально, и нужно просто посмотреть, устраивает ли. А так -- оно вполне живое.
no subject
Date: 2010-03-09 10:03 am (UTC)no subject
Date: 2010-03-09 10:16 am (UTC)Если бы не лицензия, всё было бы сильно проще. Сейчас это хозяйство представляет собой максимально простой способ распространять окамл и библиотеки без нарушений.
А так-то -- да, согласен, внешние зависимости ставить руками это гемор. Ещё наткнулся на то, что хостеры почему-то поломали старые урлы внешних зависимостей (тарболов всяких), и урлы надо периодически обновлять.