Home
Objective Caml
ocaml@conference.jabber.ru
Суббота, 13 ноября 2010< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+3
[00:18:37] serp256 вышел(а) из комнаты
[00:27:56] <ygrek> gds: хорошо излагаешь
[00:33:04] serp256 вошёл(а) в комнату
[00:50:32] ermine вышел(а) из комнаты
[00:59:05] <ygrek> > Due to JIT compilation, F# cannot relax the value restriction
[01:04:29] <Typhon> это откуда? я, наверное, тупой, но не могу связать две эти вещи :(
[01:07:29] <ygrek> это несвязано, тоже из caml-list, me просто дампит поток сознания
[01:07:38] <ygrek> кстати вот ещё - http://poormansprofiler.org/
[01:07:54] ygrek так тоже профайлит :)
[01:09:28] serp256 вышел(а) из комнаты
[01:11:35] <Typhon> а, тред про опенсорц фшарпа, видимо, я не читал :-)
[01:13:24] <Typhon> ygrek, и как успехи с таким профайлером?
[01:13:40] <gds> посмотрел на такой профайлинг.  ужос.  С другой стороны, для multithreaded -- полезно.
[01:13:45] gds вышел(а) из комнаты
[01:17:56] <komar> Очень плохо нарисовано.
[01:19:36] <Typhon> http://imgur.com/e0oAY.jpg здесь, например, лучше, да.
[01:20:07] <komar> И это очень плохо.
[01:20:16] <komar> Вон, на bitcheese.net чувак хорошо рисует.
[01:21:18] <komar> http://dump.bitcheese.net/files/bn/55/original/web-color.png?1267876024 — вот, зацените.
[01:23:38] <ygrek> очень классный профайлинг
[01:23:46] <ygrek> быстро и показывает проблему сразу
[01:24:03] <ygrek> берёшь десять сэмплов и всё понятно
[01:25:28] Kakadu вышел(а) из комнаты
[01:57:40] ygrek вышел(а) из комнаты
[02:32:06] komar вышел(а) из комнаты
[03:15:47] Typhon вышел(а) из комнаты
[08:22:48] iNode вошёл(а) в комнату
[08:53:44] SerP вошёл(а) в комнату
[08:54:13] SerP вышел(а) из комнаты
[09:42:20] serp256 вошёл(а) в комнату
[09:42:56] serp256 вышел(а) из комнаты
[11:02:34] gds вошёл(а) в комнату
[11:26:41] ygrek вошёл(а) в комнату
[11:33:55] ermine вошёл(а) в комнату
[12:18:51] komar вошёл(а) в комнату
[12:30:53] Typhon вошёл(а) в комнату
[12:42:55] Kakadu вошёл(а) в комнату
[12:50:44] ygrek вышел(а) из комнаты
[12:50:46] ygrek вошёл(а) в комнату
[14:09:18] SerP вошёл(а) в комнату
[14:39:02] ygrek вышел(а) из комнаты
[14:41:18] ygrek вошёл(а) в комнату
[14:50:43] ygrek вышел(а) из комнаты
[14:50:45] ygrek вошёл(а) в комнату
[14:51:49] SerP вышел(а) из комнаты
[16:56:11] serp256 вошёл(а) в комнату
[16:56:27] serp256 вышел(а) из комнаты
[17:19:00] Kakadu вышел(а) из комнаты
[17:30:15] ygrek вышел(а) из комнаты: Replaced by new connection
[17:30:16] ygrek вошёл(а) в комнату
[18:58:32] iNode вышел(а) из комнаты
[19:07:17] zert вошёл(а) в комнату
[20:06:03] Typhon вышел(а) из комнаты
[20:12:55] ygrek вышел(а) из комнаты
[20:12:59] ygrek вошёл(а) в комнату
[20:13:13] ygrek вышел(а) из комнаты
[20:33:42] ygrek вошёл(а) в комнату
[21:30:13] Kakadu вошёл(а) в комнату
[21:36:21] Kakadu вышел(а) из комнаты
[21:37:19] Kakadu вошёл(а) в комнату
[21:47:37] iNode вошёл(а) в комнату
[21:56:24] <Kakadu> Здесь кто-нибудь осознает как делается go to definition?
[21:56:48] <Kakadu> в общем случае для AST дерева какого-либо языка
[21:57:48] <zert> в аст пишется номер строчки, где дефинишын
[21:58:10] <zert> лезешь к дефинишыну, читаешь номер строчки, идёшь туда
[21:58:14] <ygrek> очевидно что для этого надо post-ast обработка
[21:58:21] <gds> сначала распарсить, создать environment (которое сохраняется для каждого использования идентификатора и которое является отображением идентификаторов в конкретные места определения (возможно в (file * line * col), например)).
[21:58:27] <ygrek> т.к. на уровне синтаксиса непонятно где дефинишн
[21:59:09] <ygrek> поэтому собственно в камле эту инфу (annot) выплевывает не препроцессор который имеет ast, а компилер, который уже отрезолвил все референсы
[21:59:33] <ygrek> вариант gds работает только для whole program compilation
[21:59:37] <ygrek> так?
[22:00:49] <Kakadu> и так, 1 вариант:обходить готовый AST в поисках definition
2:      для кажого вхождения переменной приписать location для её definition.
3:      создать "таблицу символов" по готовому ASt и в ней искать
[22:01:07] <Kakadu> 2е через жопу написал
[22:01:39] <Kakadu> 2:           к каждому вхождению приписать location её definitionа
[22:01:42] <Kakadu> вот так
[22:01:54] <ygrek> location'ы можно собирать сразу, при построениее
[22:01:58] <ygrek> * ии
[22:02:10] <Kakadu> ygrek: согласен
[22:02:22] <gds> если имеем разбиение на модули, go to definition должен их учитывать.  В общем случае -- конечно, нужно видеть все модули, а в окамле -- анализировать все open, все module paths, следовательно, все применении функторов.  Для окамла -- нетривиально, согласен.
[22:02:26] <ygrek> а при goto идти по ast'у вверх, чтобы локальные let'ы перекрывали глобальные
[22:02:55] <ygrek> ещё и рекурсивные модули
[22:03:14] <Kakadu> у меня не камло, у меня хакс
[22:03:15] <gds> > а при goto идти по ast'у вверх
подход с environment -- чисто функциональный вариант того, что я описал.  В целом -- именно так и надо.
[22:03:29] <ygrek> ack
[22:03:47] <Kakadu> ygrek: мне непонятно как писать обход вверх
[22:05:16] <ygrek> ну либо ссылку обратную хранить, либо идти вниз и брать последней def
[22:05:47] <Kakadu> брать что?
[22:07:07] <gds> Kakadu: можно пойти функционально, если легче будет.  Для каждого встреченного идентификатора добавлять в узел (рядом с идентификатором) значение с типом "окружение", которое в целом просто протаскивать вниз, но добавлять спереди тупл (ident * location) для каждого встреченного let ident = expr in expr.
[22:07:29] <ygrek> о, да
[23:27:50] Typhon вошёл(а) в комнату
[23:57:39] <komar> А что вы думаете про реализацию рекордов в х-е?
[23:58:48] <komar> У меня тут есть пациент, который после них даже от C++ не плюётся.
[23:58:55] <komar> Пытаюсь его успокоить.
[23:59:06] <zert> х-ь не нужен же
[23:59:07] <Typhon> а что там такое с ними?
[23:59:20] <Kakadu> я ваще не шарю что там в х-е
[23:59:35] <Typhon> я читал haskell2010 репорт, емнип, именнованные  туплы какие-то (хотя могу ошибаться)
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!