metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-03-08 10:37 pm
Entry tags:

Эпический ад

Написал таки кусок кодогенератора на F#. Сначала в лоб, просто конверсией моих типов в последовательность строк SQL запроса для создания таблиц, а потом мне резко разонравилось отсутствие разделения модели и представления и я прикрутил AST для SQL, заодно заменив выходной результат на string seq, то бишь IEnumerable<string>.
Завтра буду прикручивать AST для дельфей, если мне не откозлопитонируют мозг какой-нибудь срочно-капец-нужно-вчера хреновиной.

Теперь понимаю, чего [livejournal.com profile] zabivator устроил хаскель-срач - когда над головой не висит чистота и ленивость, но есть discriminated unions, вывод типов и это дело корректно интегрировано в привычную среду, можно особо не задумываясь писать всякий мрак.

Но при этом однозначно начинать надо с хаскеля, а для F# - еще и дотнет знать, потому что иначе этот безумный бред понять затруднительно. Хаскель лаконичен, там те же самые идеи не заслоняются синтаксисом.

[identity profile] dmzlj.livejournal.com 2010-03-09 04:57 am (UTC)(link)
А какие именно идеи в хаскелле имеются ввиду?

[identity profile] gds.livejournal.com 2010-03-09 08:10 am (UTC)(link)
если рассматривать конкретно окамл, то проблемы с синтаксисом там есть только в случае поверхностного взгляда (на original syntax). Если же посмотреть глубже (и на revised syntax), то синтаксис служит для отражения концепций, которых нет во многих других языках (в том числе в хаскеле): полиморфные вариантные типы (те же discriminated unions, но с возможностью повторения имён конструкторов в разных типах, и с типизацией, требуемой для реализации такого), объекты (row types и их типизация; самое клёвое ооп, которое я видел), функторы (функции над модулями). Это всё очень удобно, но плата за это -- синтаксис и "порог вхождения": кому-то не нравится синтаксис, кто-то не принимает концепции (не понимают, зачем всё это нужно, ведь любой алгоритм можно накодить и без этого). Как-то так.

[identity profile] thesz.livejournal.com 2010-03-11 01:46 am (UTC)(link)
Плюс, в Хаскеле можно сделать проверку полезных инвариантов.

На F# такое... Ну, не знаю. ;)