Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 10 апреля 2013< ^ >
f[x] установил(а) тему: OCaml / ОКэмл / Камль -- http://ocaml.org/ | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | KEEP CAML AND CURRY ON | F#, Coq - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[00:12:37] ftrvxmtrx вышел(а) из комнаты
[00:12:40] ftrvxmtrx вошёл(а) в комнату
[00:25:49] mrm вошёл(а) в комнату
[00:28:05] <mrm> Добрый вечер. Кто-нибудь может подсказать, как мне отдебажить выхлоп расширения camlp4, установленного в виде пакета ocamlfind?
[00:29:02] <mrm> Да, можно ручками написать "camlp4o blablabla", но расширений в одном файле используется несколько + у них есть куча своих зависимостей от ocamlfind пакетов. Короче, ужос :-(
[00:31:04] <mrm> Пока ручками пишу, но уже капитально задолбался. Ужасно много времени и нервов на это уходит.
[00:51:51] <mrm> Разобрался. На случай если кому пригодится:
[00:53:36] <mrm> Впилил в myocamlbuild флаги, благодаря которым препроцессор стал получать параметры, заставляющие не передавать AST в компилятор напрямую, а предварительно претти-принтить в файл.
[00:53:40] <mrm> let _ = dispatch (function
    | After_rules ->
        if debug then
          (flag ["ocaml";"compile";] & S[A"-ppopt"; A("-printer"); A"-ppopt"; A("o")];
           flag ["ocaml";"ocamldep";] & S[A"-ppopt"; A("-printer"); A"-ppopt"; A("o")])
    | _ -> ())
[00:54:27] <mrm> Теперь в случае ошибок компилятор направляет меня к сгенеренному коду, который ложит в tmp. Красота!
[01:06:12] tilarids вышел(а) из комнаты: Computer went to sleep
[01:09:10] <mrm> (т.е. Camlp4 как был говном, так и остался, но некоторым мелочам нельзя не порадоваться)
[01:10:50] bobry вошёл(а) в комнату
[01:14:16] <bobry> господа, а подскажите как принято в stubs константы объявлять?
[01:14:24] <mrm> Вот ещё такая беда: camlp4 виснет при генерации кода в цитированиях, причём сам генератор кода заведомо зависнуть не может (т.к. в нём нет циклов и рекурсий и отдельно от цитирований он нормально работает). Есть подозрение, что просто генерируется такой код, на котором camlp4 впадает в кататонический ступор. Как такие проблемы отлаживать?
[01:16:11] <mrm> bobry: константы произвольного камлёвого типа? (т.е. результат вычисления любого выражения?)
[01:17:05] <bobry> ну на самом деле мне просто хочется сишный флоат обернуть в камло флоат
[01:18:11] <mrm> Боюсь, его придётся как global root зарегать.
[01:18:41] <mrm> Я бы такие "константы" напихал в макросы, вызывающие alloc_float.
[01:18:54] <bobry> гм, похоже проще скопипастить их в камлокод :)
[01:19:07] <bobry> там константы типа M_2_SQRTPI
[01:19:46] Kakadu вышел(а) из комнаты
[01:19:47] <mrm> #define CAML_M_2_SQRTPI alloc_float(M_2_SQRTPI)
[01:19:50] <mrm> :-)
[01:20:48] <mrm> Ой. Не не не не не.
[01:20:51] <bobry> так оно мне надо потом только из камло
[01:21:13] <mrm> Так ни в коем случае нельзя, т.к. local roots тоже надо регать :-)))
[01:21:55] <mrm> Ну тогда да, нет смысла в С такие вещи пихать.
[01:23:23] <bobry> угу, спасибо :)
[01:28:44] ftrvxmtrx вышел(а) из комнаты
[01:28:49] ftrvxmtrx вошёл(а) в комнату
[01:29:00] <gds> mrm: про "camlp4 виснет" -- этого быть не должно, может багу отправить?
[01:30:34] <gds> bobry: про fix-комбинатор уже сам разобрался?
[01:31:01] <mrm> gds: Сначала нужно убедиться, что за мной косячка нет. Отладочные принты не помогают: мой код вызывается ровно один раз и возвращает камлёвый аст, после чего вызывается Camlp4.PreCast.Syntax.Quotation.add и происходит зависание.
[01:31:23] <mrm> Ой, соврал.
[01:31:48] <mrm> Camlp4.PreCast.Syntax.Quotation.add нормально работает :-)
[01:32:23] <gds> mrm: я не спец в campl4, но резиновой уточкой побыть могу.
[01:33:13] <mrm> Q.add "delphi" Q.DynAst.expr_tag (fun loc _ s -> printf "1!\n"; expand_expr loc s; printf "2!\n")
[01:33:32] <mrm> Выводится и 1 и 2, после чего процесс начинает жрать 100% CPU
[01:35:06] <mrm> gds: Уточка, как мне залезть внутрь Camlp4?
[01:35:15] <gds> 1 и 2 -> "fun loc _ s" выполнилось.  Дело за Q.add.
[01:36:10] <mrm> Можно навтыкать в этот Q.add отладочных принтов.
[01:36:11] <gds> уточка может только слушать и задавать вопросы, взятые из подсознания спраштвающего.
[01:36:43] <gds> а после Q.add отладку если?  Чтобы узнать, в нём ли дело.
[01:36:56] <mrm> Ещё можно попробовать влезть туда в ocamldebug, но я подозреваю, что долго протрахаюсь с таким подходом.
[01:37:20] <gds> дебагеры всегда долго и печально.
[01:37:37] <mrm> Я его запустить на Camlp4 по-нормальному не смогу.
[01:38:00] <mrm> Нужно будет кучу каких-нибудь путей прописывать, чтобы значения печатались.
[01:38:54] <mrm> Ладно. Навтыкаю туда отладочных принтов. Если повезёт, баг какой-нибудь исправлю.
[01:40:01] <gds> для бисекции неплохо бы после Q.add добавить.
[01:47:53] <mrm> Ага! -- Не в Q.add зависание происходит!!!
[01:48:03] <mrm> Ужас, ужас, ужас.
[01:57:26] <mrm> gds: Уточка, я нашёл кривой AST, на котором camlp4 виснет.
[01:57:36] <mrm> Ast.ExRec (_loc,
   (Ast.RbEq (_loc, (Ast.IdUid (_loc, "yoba")),
      (Ast.ExId (_loc, (Ast.IdUid (_loc, "yoba")))))),
   (Ast.ExNil _loc))
[01:58:01] <mrm> Вот это некорректное представление рекорда.
[01:58:24] <mrm> Сейчас его пофиксю и посмотрим, что из этого получится.
[02:06:02] <bobry> gds: неа, не разобрался, а ты отвечал?
[02:09:44] <mrm> Нет. Не в этом дело. Баг у себя исправил (заменил IdUid на IdLid), но camlp4 по-прежнему зависает.
[02:09:45] ftrvxmtrx вышел(а) из комнаты
[02:09:49] ftrvxmtrx вошёл(а) в комнату
[02:17:29] ftrvxmtrx вышел(а) из комнаты
[02:17:49] <mrm> Эх. Бида. Пошёл спать...
[02:17:56] mrm вышел(а) из комнаты
[02:23:21] <bobry> gds: кстати ты там у себя где-нибудь либу для статистики не запилил?
[02:23:37] <bobry> а то мне прямо за державу обидно, для х-ля есть либа, а для камло нема
[02:23:42] <bobry> уже сам начал прикидывать даже
[02:40:31] <gds> bobry: про fix -- не отвечал.
про статистику -- не думал даже.
[02:43:06] <gds> bobry: если будешь статистику делать, у тебя будут две проблемы: главная -- работа с плавучкой, мелкая -- собственно алгоритмы.
[02:44:58] <bobry> про мелкую не согласен
[02:45:13] <bobry> почитал про апроксимацию квантилей нормального распределения и офигел
[03:05:12] bobry вышел(а) из комнаты
[03:06:14] tilarids вошёл(а) в комнату
[03:27:37] Sun][ вышел(а) из комнаты
[03:35:54] bobry вошёл(а) в комнату
[03:37:36] <gds> bobry: а вот как асилишь алгоритмы, так и станешь кирпичи откладывать, чтобы построить прочный фундамент для "не слишком погрешимости" библиотеки.  Конечно, всё получится, было бы желание.
[03:41:39] bobry вышел(а) из комнаты
[03:43:33] mmouratov вошёл(а) в комнату
[03:44:13] mmouratov вышел(а) из комнаты
[04:40:34] bobry вошёл(а) в комнату
[04:42:22] bobry вышел(а) из комнаты
[05:28:01] f[x] вошёл(а) в комнату
[05:40:53] bobry вошёл(а) в комнату
[05:42:12] bobry вышел(а) из комнаты
[05:50:35] <f[x]> > Добрый вечер. Кто-нибудь может подсказать, как мне отдебажить выхлоп расширения camlp4, установленного в виде пакета ocamlfind?
идёшь в _build/_log и копипастишь нужную строку оттуда и запускаешь вручную
[05:50:52] <f[x]> вариант два - делаешь ocamlbuild myfile.pp.ml - и получаешь на выходе выхлоп camlp4
[05:53:20] <f[x]> mrm: минимальный пример закинь
[06:04:03] f[x] вышел(а) из комнаты
[06:23:26] f[x] вошёл(а) в комнату
[06:23:27] f[x] вышел(а) из комнаты
[06:23:47] f[x] вошёл(а) в комнату
[06:41:13] bobry вошёл(а) в комнату
[06:43:21] bobry вышел(а) из комнаты
[07:41:39] bobry вошёл(а) в комнату
[07:42:12] bobry вышел(а) из комнаты
[08:41:58] bobry вошёл(а) в комнату
[08:43:43] bobry вышел(а) из комнаты
[09:10:31] Sun][ вошёл(а) в комнату
[09:32:50] Sun][ вышел(а) из комнаты
[10:33:28] bobry вошёл(а) в комнату
[10:35:27] <bobry> gds: оказалось что проще фигачить всё поверх gsl, ибо там уже есть всё что надо http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html
[10:37:37] zinid вошёл(а) в комнату
[10:55:16] bobry вышел(а) из комнаты
[10:57:26] UncleVasya вошёл(а) в комнату
[10:59:40] bobry вошёл(а) в комнату
[11:00:25] bobry вышел(а) из комнаты
[11:04:32] Sun][ вошёл(а) в комнату
[11:09:14] Sun][ вошёл(а) в комнату
[11:18:13] ermine вошёл(а) в комнату
[11:19:01] komar вышел(а) из комнаты
[11:20:39] Kakadu вошёл(а) в комнату
[11:34:29] Sun][ вышел(а) из комнаты
[11:41:53] komar вошёл(а) в комнату
[11:43:38] tilarids вышел(а) из комнаты: Computer went to sleep
[11:57:09] Sun][ вошёл(а) в комнату
[11:59:00] Sun][ вышел(а) из комнаты
[11:59:58] Sun][ вышел(а) из комнаты
[12:00:12] Sun][ вошёл(а) в комнату
[12:04:39] tilarids вошёл(а) в комнату
[12:09:16] tilarids вышел(а) из комнаты: Computer went to sleep
[12:27:16] bobry вошёл(а) в комнату
[12:30:27] <bobry> а подскажите ка мне господа, можно ли сказать опаму брать либу из соседней репки
[12:30:33] <bobry> в смысле тупо из папочки локальной
[12:31:06] <Kakadu> А ты готов при этом пакет новый создать?
[12:31:18] <bobry> неа
[12:31:25] <bobry> или может можно камло туда ткнуть просто?
[12:31:30] <bobry> OCAMLFIND_PATH какой-то был
[12:32:27] <Kakadu> ааа, я тебя не так понял
[12:32:43] <Kakadu> Ну да. наверное надо это делать на уровне камлофайнда
[12:34:04] <f[x]> вопрос сформулируй
[12:34:14] <f[x]> "опам брать либу из папки"
[12:34:16] <f[x]> это что?
[12:34:20] <f[x]> либа проинсталлена там?
[12:34:25] <Kakadu> видимо
[12:34:26] <f[x]> или там исходники?
[12:34:32] bobry вышел(а) из комнаты
[12:34:56] <Kakadu> Я вначале подумал что у него там сорцы
[12:36:20] bobry вошёл(а) в комнату
[12:36:48] <bobry> хочется чтобы камло при линковки брал не глобально установленную либу, а скомпиленную либу из соседней папки
[12:42:42] <f[x]> ну и при чём тут опам?
[12:43:36] <f[x]> самый lowlevel вариант - подсунуть нужный путь через -I в ocamlc/ocamlopt/etc
[12:44:32] <f[x]> вариант проще и правильней - поставить скомпиленную либу ocamlfind'ом
[12:44:45] <bobry> нипричем – я глупость написал, каждый раз ставить либу не хочется
[12:45:19] <f[x]> ну значит прокинуть в твоей билд-тулзе опцию -I компилятору
[12:45:36] <f[x]> (в чём проблема поставить /me не понимает, ну пускай)
[12:48:02] <bobry> оке, спасибо
[13:07:10] Typhon вошёл(а) в комнату
[13:08:52] ftrvxmtrx вошёл(а) в комнату
[13:22:42] mmouratov вошёл(а) в комнату
[13:33:00] bobry вышел(а) из комнаты
[14:03:03] Kakadu вышел(а) из комнаты
[14:03:10] Kakadu вошёл(а) в комнату
[14:04:10] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:04:10] Kakadu вошёл(а) в комнату
[14:04:40] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:04:41] Kakadu вошёл(а) в комнату
[14:07:34] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:07:35] Kakadu вошёл(а) в комнату
[14:08:51] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:08:51] Kakadu вошёл(а) в комнату
[14:10:27] Kakadu вышел(а) из комнаты
[14:10:33] Kakadu вошёл(а) в комнату
[14:12:44] <mmouratov> >> <f[x]> mrm: минимальный пример закинь
[14:12:48] <mmouratov> Разобрался уже:
[14:12:56] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:12:56] Kakadu вошёл(а) в комнату
[14:13:08] <mmouratov> Впилил в myocamlbuild флаги, благодаря которым препроцессор стал  получать параметры, заставляющие не передавать AST в компилятор  напрямую, а предварительно претти-принтить в файл.
[00:53:40] <http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2013/04/10.html#00:53:40.792661> <mrm> let _ = dispatch (function
    | After_rules ->
        if debug then
          (flag ["ocaml";"compile";] & S[A"-ppopt"; A("-printer"); A"-ppopt"; A("o")];
           flag ["ocaml";"ocamldep";] & S[A"-ppopt"; A("-printer"); A"-ppopt"; A("o")])
    | _ -> ())
[00:54:27] <http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2013/04/10.html#00:54:27.432808> <mrm> Теперь в случае ошибок компилятор направляет меня к сгенеренному коду, который ложит в tmp. Красота!
[14:13:19] <mmouratov> Но спасибо за хинт с "ocamlbuild myfile.pp.ml", буду пользоваться.
[14:13:19] Kakadu вышел(а) из комнаты
[14:13:25] Kakadu вошёл(а) в комнату
[14:13:49] Kakadu вышел(а) из комнаты
[14:13:52] Kakadu вошёл(а) в комнату
[14:14:30] Kakadu вышел(а) из комнаты
[14:14:36] Kakadu вошёл(а) в комнату
[14:14:57] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:14:57] Kakadu вошёл(а) в комнату
[14:18:00] Kakadu вышел(а) из комнаты
[14:18:06] Kakadu вошёл(а) в комнату
[14:18:44] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:18:45] Kakadu вошёл(а) в комнату
[14:19:15] Kakadu вышел(а) из комнаты
[14:19:21] Kakadu вошёл(а) в комнату
[14:20:33] Kakadu вышел(а) из комнаты
[14:20:36] Kakadu вошёл(а) в комнату
[14:21:22] Kakadu вышел(а) из комнаты
[14:21:25] Kakadu вошёл(а) в комнату
[14:24:21] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:24:22] Kakadu вошёл(а) в комнату
[14:27:05] ftrvxmtrx вошёл(а) в комнату
[14:32:41] f[x] вышел(а) из комнаты
[14:34:39] Kakadu вышел(а) из комнаты
[14:34:45] Kakadu вошёл(а) в комнату
[14:35:26] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:35:26] Kakadu вошёл(а) в комнату
[14:35:46] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:35:46] Kakadu вошёл(а) в комнату
[14:35:58] Kakadu вышел(а) из комнаты
[14:36:03] Kakadu вошёл(а) в комнату
[14:36:18] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:36:19] Kakadu вошёл(а) в комнату
[14:37:23] Kakadu вышел(а) из комнаты: Replaced by new connection
[14:37:24] Kakadu вошёл(а) в комнату
[14:38:36] Kakadu вышел(а) из комнаты
[15:54:46] zinid вышел(а) из комнаты
[16:38:18] Zbroyar вошёл(а) в комнату
[16:39:08] komar вышел(а) из комнаты: Logged out
[16:59:17] UncleVasya вышел(а) из комнаты
[17:00:21] zinid вошёл(а) в комнату
[17:36:58] mmouratov вышел(а) из комнаты
[18:17:42] Kakadu вошёл(а) в комнату
[18:19:03] zinid вышел(а) из комнаты
[18:41:03] ftrvxmtrx вышел(а) из комнаты
[18:46:04] komar вошёл(а) в комнату
[18:51:39] komar вышел(а) из комнаты: Replaced by new connection
[18:51:39] komar вошёл(а) в комнату
[19:05:34] ftrvxmtrx вышел(а) из комнаты
[19:05:54] Sun][ вышел(а) из комнаты
[19:06:00] Sun][ вошёл(а) в комнату
[19:13:12] tilarids вошёл(а) в комнату
[19:50:00] Kakadu вышел(а) из комнаты
[19:50:59] Typhon вышел(а) из комнаты
[20:07:24] Sun][ вышел(а) из комнаты
[20:22:07] UncleVasya вошёл(а) в комнату
[20:25:28] tilarids вышел(а) из комнаты: Computer went to sleep
[20:45:24] bobry вошёл(а) в комнату
[20:51:32] Zbroyar вышел(а) из комнаты
[20:54:28] bobry вышел(а) из комнаты
[20:55:30] UncleVasya вышел(а) из комнаты
[20:58:17] Kakadu вошёл(а) в комнату
[21:18:23] komar вышел(а) из комнаты
[21:23:52] Sun][ вошёл(а) в комнату
[21:26:39] komar вошёл(а) в комнату
[22:08:41] ermine вышел(а) из комнаты
[22:44:37] Zbroyar вошёл(а) в комнату
[22:59:47] Typhon вошёл(а) в комнату
[23:28:21] ftrvxmtrx вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!