Home
Objective Caml
ocaml@conference.jabber.ru
Суббота, 25 февраля 2012< ^ >
f[x] установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire
Конфигурация комнаты
Участники комнаты

GMT+4
[00:01:20] Andrey Popp вышел(а) из комнаты
[00:02:09] Andrey Popp вошёл(а) в комнату
[00:02:20] Andrey Popp вышел(а) из комнаты
[00:09:42] Kakadu вышел(а) из комнаты
[00:27:44] Typhon вошёл(а) в комнату
[00:27:46] Typhon вышел(а) из комнаты
[00:28:22] Kakadu вошёл(а) в комнату
[00:54:51] bobry вышел(а) из комнаты
[01:43:52] f[x] вошёл(а) в комнату
[02:01:35] <gds> http://thedeemon.livejournal.com/44707.html
[02:03:05] Kakadu вышел(а) из комнаты
[02:35:39] klapaucius вышел(а) из комнаты
[03:10:10] f[x] вышел(а) из комнаты: Computer went to sleep
[03:31:18] <gds> уже n'ный раз колхозю такую штуку: есть список/массив/мапка, есть record type.  из списка надо достать все поля, определённым образом соответствующие полям записи, но отдельным образом обработать остальные поля.
и вот, как-то криво получается.  Либо беготня по списку на каждое поле с последующим его удалением (чтобы остаток обработать отдельно), либо ещё какой изврат.
Из более-менее прямого придумалось извращение, при котором список отображается на функции 'r -> 'r (где 'r -- тип записи), и в некоторых функциях идёт заполнение этих полей записи через { (r) with somefield = somevalue }, а в других -- обработка остальных полей, которые не попадают в запись и должны быть обработаны иначе.
Но и это не ок, потому что в некоторых записях некоторые поля не содержат значения по умолчанию, что заставляет извращаться дальше.
Посоветуйте что-нибудь, штоле.
[03:32:37] <gds> а, ну ещё вариант, вытащить всё в рефы и List.iter (.. ref := val ), но мне тоже не нравится, но уже эстетически.  Зато, видимо, его и буду использовать.
[03:45:49] komar вышел(а) из комнаты: Replaced by new connection
[03:45:49] komar вошёл(а) в комнату
[05:51:46] letrec вошёл(а) в комнату
[06:25:13] ftrvxmtrx вышел(а) из комнаты
[07:09:20] letrec вышел(а) из комнаты
[08:02:46] letrec вошёл(а) в комнату
[09:19:25] letrec вышел(а) из комнаты
[09:59:12] letrec вошёл(а) в комнату
[11:05:57] superbobry@gmail.com/Meebo вошёл(а) в комнату
[11:17:22] Kakadu вошёл(а) в комнату
[11:31:22] dzhon вошёл(а) в комнату
[12:05:03] <superbobry@gmail.com/Meebo> Kakadu, не хочешь рецептиков пописать?
[12:05:20] <Kakadu> superbobry@gmail.com/Meebo: что, я --- никогда :-)
[12:05:27] <superbobry@gmail.com/Meebo> я там навелосипедил poor man's var. expansion
[12:05:38] <superbobry@gmail.com/Meebo> можно портировать odbшную базу
[12:11:01] letrec вышел(а) из комнаты
[12:11:05] ftrvxmtrx вошёл(а) в комнату
[12:52:36] ermine вошёл(а) в комнату
[13:05:42] dzhon вышел(а) из комнаты: Replaced by new connection
[13:05:42] dzhon вошёл(а) в комнату
[13:06:36] <superbobry@gmail.com/Meebo> gds: что-то я не понял твою проблему с полями? нужно из какой то структуры сделать рекорд. например proplist -> record? причем некоторые поля надо предобработать
[13:06:38] <superbobry@gmail.com/Meebo> так?
[13:07:31] <gds> изначально -- допустим, ассоциативный список, где ключи A и B соответствуют полям записи a и b, а остальное надо класть в поле записи c.
[13:07:51] <superbobry@gmail.com/Meebo> гм
[13:08:11] <superbobry@gmail.com/Meebo> поля a, b и c -- все относятся к одной записи?
[13:10:06] <gds> да, конечно.
[13:10:22] <gds> а в списке -- ещё и C, D, E, F.
[13:10:28] shaggie вошёл(а) в комнату
[13:10:48] <superbobry@gmail.com/Meebo> ну-ну, я тоже как то с такой фигней мучался
[13:10:48] <gds> конечно, наколхозить -- получилось, но как-то некрасиво.
[13:10:51] <superbobry@gmail.com/Meebo> в итоге ref :)
[13:12:08] <gds> ну да, ref он тупой, не вызывает копирования записи, хотя бы.  но в последнем примере для разнообразия сделал через копирование, три поля копируются без проблем.
да и вообще, непонятно, как тут жить.
[13:50:45] dzhon вышел(а) из комнаты: Replaced by new connection
[13:50:45] dzhon вошёл(а) в комнату
[14:11:59] shaggie вышел(а) из комнаты
[14:37:03] <ermine> let rec в камле гавно
[14:37:17] <superbobry@gmail.com/Meebo> почему?
[14:38:26] <ermine> щас пытаюсь понять пчу оно сказало unbound функция внутри этого блока, где функция была определена в одном из and ...
[14:38:56] <ermine> а блок кстати имеет 1200 строк мелких функций, хз сколько функций, наверное 150
[14:39:38] <ermine> придется дотачивать AI для уменьшения рекурсивности
[15:16:40] <gds> ermine: и не такое компилировали, бага твоя.
[15:19:26] <ermine> gds: ну вопрос как найти багу в 1200 строках убористого кода
[15:19:45] <ermine> весь файл 2300 строк убористого
[15:22:38] <gds> camlp4 pa_o.cmo pr_o.cmo и по индентации, например.
[15:37:50] dzhon вышел(а) из комнаты
[15:38:57] <ermine> а вообще - я даже не понимаю, в чем бага
[15:45:28] <ermine> о, таки бага
[15:52:19] dzhon вошёл(а) в комнату
[15:58:54] superbobry@gmail.com/Meebo вышел(а) из комнаты
[17:15:47] letrec вошёл(а) в комнату
[17:37:31] shaggie вошёл(а) в комнату
[17:47:56] dzhon вышел(а) из комнаты: Replaced by new connection
[17:47:56] dzhon вошёл(а) в комнату
[18:14:12] <ermine> ох, yaml крепко вставляет, генерить его парсер - дело тёмное как Восток, из-за несговорчивых типов, например int ref vs int,
[18:14:46] <ermine> а еще надо переписать camlp4 для CS грамматик, во
[18:16:37] <ermine> в caml4 мне нужен его ast
[18:18:25] <ermine> еще сильной помехой является мнимая необходимость генерации текстового файла грамматики peg, на основе которой генерится сам парсер собственно - в peg не выразишь какой тип юзать int ref или it
[18:19:03] <ermine> ref же сам еще сильно влияет на синтаксис камлевого кода
[18:19:15] <ermine> в общем всё печально
[18:19:48] <gds> какой такой ref?  опиши всратце.
[18:19:50] <ermine> Kakadu: как дела у тебя?
[18:20:44] <ermine> gds: в yaml bnf есть определение типа
a(m) ::= m = "abc" => m = "def"
[18:20:57] <ermine> слева от => - сравнение, справа - биндинг
[18:21:51] <ermine> в каком-нить другом месте предполагается, что m - не ref и с ним напрямую можно работать
[18:22:49] <ermine> пойду застрелюсь, до конца компиляции осталось всего лишь 300 строк
[18:26:34] <Kakadu> ermine: фигней страдаю
[18:31:34] <ermine> Kakadu: а как же диплом?
[18:34:44] <Kakadu> жизнь гавно
[18:35:55] <ermine> да не такое уж и гавно, просто без нормального образования слишком много мистики
[18:38:24] <ermine> то определение с=> и те места в коде, где параметр m возникает из воздуха для засовывания в функции - самые мистические места парсера
[18:38:46] <ermine> во всех остальных непонятных местах легко было смухлевать
[18:40:09] <ermine> так
[18:40:27] <ermine> поплакалась тут - поняла, в каком направлении дальше молиться
[18:51:30] bobry вошёл(а) в комнату
[19:07:28] dzhon вышел(а) из комнаты
[19:23:13] shaggie вышел(а) из комнаты
[20:10:30] f[x] вошёл(а) в комнату
[20:13:44] <bobry> оазис теперь хочет batteries, а ocaml-expect все еще зависит от extlib <_<
[20:19:18] f[x] вышел(а) из комнаты
[20:19:55] f[x] вошёл(а) в комнату
[20:19:59] f[x] вышел(а) из комнаты
[20:25:50] <ermine> женская логика - лучшее оружие для тупой бабы
[20:26:20] ermine скомпилила парсер ямла с помощью этого самого оружия
[20:27:24] <ermine> теперь страшно пустить тест
[20:29:14] <ermine> ой
[20:29:30] <ermine> прочитал конфиг кувьшту и выдал success
[20:29:35] <ermine> ну точно, стреляться
[20:30:29] letrec вышел(а) из комнаты
[20:30:41] <ermine> а не, там комменты одни
[20:30:48] <ermine> надо поискать другой файл
[21:01:37] dzhon вошёл(а) в комнату
[23:09:41] dzhon вышел(а) из комнаты: Replaced by new connection
[23:09:41] dzhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!