metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-11-13 11:49 pm
Entry tags:

Как оперденью сломать F#?

Элементарно.
Экспортируем из опердени датасет с 381 записью по 40 полей в каждой в формат исходника F# и пытаемся это компилировать. Каких-то несчастных 10 тыс строк и 660 килобайт кода. Компилятор сдыхает с переполнением стека. Так же как и хаскель когда-то в такой же ситуации.
Придется все-таки для таких целей написать адекватную сериализацию, чтобы данные лежали не в исходнике, а отдельно, а исходник содержал только метаданные и код чтения.

Вообще, изначальная идея такова - часто есть необходимость произвести некое нетривиальное вуду над отчетом для проверки, и мне кажется, что экспорт отчета в виде исходника, а затем загрузка этого исходника в интерактивную консоль хаскеля или F# - это самый простой способ надругаться над данными отчета функциональщиной.
Например, сегодня была надобность из метаданных SQL запроса генерировать более другой запрос, чтобы эти самые пресловутые 40 полей не повторять 10 раз вручную.

[identity profile] volodymir-k.livejournal.com 2010-11-13 11:44 pm (UTC)(link)
а что, опции нет компилятору, чтобы стека больше жрал?

[identity profile] metaclass.livejournal.com 2010-11-14 07:12 am (UTC)(link)
Нету.

[identity profile] gds.livejournal.com 2010-11-14 06:05 am (UTC)(link)
+1 про опцию (или, если у камла спёрли всё, то через окружение задаётся -- ведь оно само на себе должно быть написано), а ещё можно разбить всё на модули, которые потом открыть. Если все типы взаимно-рекурсивны, конечно, фокус не пройдёт.

[identity profile] guamoka.livejournal.com 2010-11-14 12:17 pm (UTC)(link)
Да. С++ у меня запиливался только безумными шаблонами. А недавно словил отличный глюк от жаббы. Суть в том, что не закрыл комментарий, но как-то хитро получился перенос строк. И компилятор это проглотил. А на рантайме все упало.