metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-09-03 09:31 pm
Entry tags:

Привет из 80х годов прошлого века

Вспомнил один срач на тему однопроходных компиляторов, где Steve Yegge критиковал Clojure за то, что в ней объявления видны не во всем модуле, а только ниже объявления. (Ну, за исключением declare которые что-то вроде forward-объявлений).
Сижу приделываю новую фичу к кодогенератору на F# - и таки внезапно оказывается, что это не только в Clojure, но так же и F#, и, что самое печальное, - в долбаном SQL, который я генерирую.
Сижу вот, сортирую объекты из которых генерируется SQL по зависимостям.

А как с этим дела обстоят в Scala?
Я тут подумываю, что надо бы провести сравнение F# и Scala на моих задачах, все равно уже полная работа JVM и жаб, так может, выводилка типов в Scala для меня окажется более приемлемой, чем дикий ад в F# (теперь я понимаю, почему его [livejournal.com profile] thesz критикует). Ну и макросы в скале [livejournal.com profile] xeno_by прикрутил вроде уже.
Хотя единственное, что мне приходит в голову на тему приличного использования макросов - это при их выполнении долбится в БД или модель этой БД и генерировать код.

[identity profile] xeno-by.livejournal.com 2012-09-03 08:38 pm (UTC)(link)
Там по-другому никак. У них макросы раскрываются в тайпере, а биндинги резолвятся на фазу раньше, в ренеймере. Если бы не этот хак, вообще бы ссылки на топ левел в том же файле не работали. Народ не раз пытался победить, но в третьей папере они просто забили и объявили это фичей.