Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 26 ноября 2009< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | voice по запросу | ocaml мёртв, move on
Конфигурация комнаты

GMT+3
[00:31:57] ExplicitCall вошёл(а) в комнату
[00:36:48] ExplicitCall вышел(а) из комнаты
[01:30:36] ygrek вышел(а) из комнаты
[02:34:39] Typhon вышел(а) из комнаты
[02:54:47] daapp вошёл(а) в комнату
[03:17:05] daapp вышел(а) из комнаты
[04:29:42] daapp вошёл(а) в комнату
[07:32:35] iNode вышел(а) из комнаты
[07:45:22] geovit вошёл(а) в комнату
[08:17:19] michael.holub вышел(а) из комнаты
[08:22:10] iNode вошёл(а) в комнату
[09:23:49] Typhon вошёл(а) в комнату
[09:26:04] aloner2k вошёл(а) в комнату
[10:00:28] ygrek вошёл(а) в комнату
[12:17:55] michael.holub вошёл(а) в комнату
[12:34:33] Typhon вышел(а) из комнаты
[12:44:09] michael.holub вышел(а) из комнаты
[13:12:45] ermine вошёл(а) в комнату
[13:53:34] <f[x]> поток сознания
стандартный способ "обезопасить" Marshal - добавлять в начало бинарных данных какой-то тэг, с намёком что тег надо апдейтить при апдейте типа маршаленного значения
т.е. типа module type Sig = sig type t val tag : string module Make(T:Sig) = ...
но errare humanum est, забыл изменить тег и опаньки
но! camlp4 to the rescue. можно считать этот тег как хэш от ast типа Sig.t
profit?
[13:57:49] daapp вышел(а) из комнаты
[14:25:18] ygrek вышел(а) из комнаты
[14:25:43] ygrek вошёл(а) в комнату
[14:29:03] <gds> f[x]: ага! Для простых случаев (когда нужно просто различать версии друг от друга в доверенной среде) -- приличное автоматизированное решение. И надо убедиться, что в ast есть только те вещи, которые важны для маршаллинга. (а то окажется, что какая-то мелочь может поменять хеш.)
[15:06:44] Typhon вошёл(а) в комнату
[15:06:48] <f[x]> вроде бы ast как раз для этого хорошо подходит - униформное представление
[15:06:50] <f[x]> минус _loc
[15:08:46] <gds> на ум приходят вариантности параметров -- на представление данных в памяти (следовательно, при маршаллинге) не влияет, а хеш другой.
[15:18:39] <f[x]> поинт
[15:18:54] <f[x]> правда я их сам ещё ни разу не выписывал
[15:20:16] <gds> во прикол. а откуда они у тебя брались?
[15:28:24] <f[x]> э. я имею ввиду что видел эти обьявления только в stdlib
[15:28:37] <f[x]> а сам всегда использую без указания вариантности
[15:30:39] <gds> понимаю. Удивительно, как свои "контейнерные" типы для полиморфных вариантов или объектов не приходилось подтипизировать, вот я про что :)
[15:34:50] <f[x]> избёг :)
[15:36:12] <f[x]> кстати Camlp4MacroParser - полезная вещь
[15:38:31] <f[x]> кстати, хэш аста не катит - т.к тип может определяться через другие : type t = t'
[15:39:33] <f[x]> тут тогда вариант как в deriving - зависеть от аннотаций ко всем участвующим элементам
[15:40:01] <f[x]> короче на уровне синтаксиса это делать не хорошо
[15:42:32] <gds> в простых случаях можно и ast хешировать.
а на деле я бы предпочёл дорисовать ещё один тайпкласс к deriving, если бы серьёзно понадобилось.
заодно можно было бы учесть несимметричность отношения безопасности. например, читатель [A|B|C] вполне сможет прочитать [A|B].
[15:43:15] <gds> да, и ещё вопрос: к deriving или к type-conv.
[15:45:01] <f[x]> да, я тоже подумал про использование deriving
[15:46:09] <gds> и ещё проблема: ограничения на данные далеко не всегда можно записать системой типов окамла (как и многих других языков). Поэтому, даже если представление в памяти совпало, это не значит, что получатель прочитает валидные для него данные. (хотя процесс маршаллинга пройдёт корректно)
[15:47:50] <f[x]> ну, за этот инвариант отвечает функция которая маршалит
[15:48:59] <gds> ну, записали на диск, затем поменяли алгоритмы, ограничения на корректность данных в общем случае изменились, и тут читаем старые данные.
[15:50:31] <f[x]> а. ну тогда только руками
[15:52:11] Typhon вышел(а) из комнаты
[15:53:22] sevenov вышел(а) из комнаты: Replaced by new connection
[15:53:25] sevenov вошёл(а) в комнату
[15:57:52] ygrek вышел(а) из комнаты
[16:14:31] <f[x]> btw, кто-нибудь заинтересован в том чтобы пропихнуть deriving и/или некоторые другие pa_* в debian? см. http://wiki.debian.org/Teams/OCamlTaskForce/CamlP4Misc Дебиановские камловоды рады будут contribution'ам со стороны. Посему я планирую deriving оформить. JFYI
[16:19:58] Typhon вошёл(а) в комнату
[16:25:53] Typhon вышел(а) из комнаты
[16:32:33] sceptic вышел(а) из комнаты
[16:32:47] f[x] вышел(а) из комнаты
[16:38:34] sceptic вошёл(а) в комнату
[16:44:27] Typhon вошёл(а) в комнату
[16:54:27] Typhon вышел(а) из комнаты
[16:57:24] iNode вышел(а) из комнаты
[16:58:14] geovit вышел(а) из комнаты
[17:00:28] Typhon вошёл(а) в комнату
[17:02:04] <ermine> а почему нет камлевого варианта xmonad?
[17:03:51] <gds> а, по-моему, это замечательный план: загнать хаскель в категорию языков, пригодных для академиков и для конфигурирования оконного менеджера.
[17:06:52] <ermine> у xmonad получается шире
[17:06:53] <ermine> народ смотрит на хаскиль
[17:07:48] <Typhon> "да, это тот скриптовый язык, который окошки прозрачными делает" :)
[17:10:46] <gds> омг, тикль???
[17:18:26] Typhon вышел(а) из комнаты
[18:22:19] ygrek вошёл(а) в комнату
[18:27:38] sevenov вышел(а) из комнаты
[18:28:35] Typhon вошёл(а) в комнату
[18:31:31] michael.holub вошёл(а) в комнату
[18:31:38] michael.holub вышел(а) из комнаты
[18:37:41] ermine вышел(а) из комнаты
[18:51:09] ermine вошёл(а) в комнату
[19:38:05] Typhon вышел(а) из комнаты
[19:53:32] <ermine> + /usr/local/bin/ocamldep.opt -modules streamError.ml > streamError.ml.depends
Command got signal -8.
[19:53:38] <ermine> шо это?
[19:54:02] <ermine> я тут проапгрейдила комп, удвоив разрядность
[20:53:04] ExplicitCall вошёл(а) в комнату
[20:53:56] Typhon вошёл(а) в комнату
[20:58:59] ExplicitCall вышел(а) из комнаты
[21:33:41] <ermine> там была лишняя скобка в конце файла, обычный syntax error, только непонятно пчу ocamldep так вываливается
[21:33:41] ygrek вышел(а) из комнаты
[22:22:54] ygrek вошёл(а) в комнату
[22:28:50] sevenov_ вошёл(а) в комнату
[22:36:22] <ygrek> freebsd?
[22:55:38] sevenov_ вышел(а) из комнаты
[22:55:46] sevenov_ вошёл(а) в комнату
[23:13:05] <ermine> ygrek: а он тут при чом?
[23:27:37] <ygrek> ermine: а разве нет?
[23:34:46] <ermine> ygrek: нет
[23:34:57] <ygrek> странно
[23:35:07] ygrek тролль-неудачник
[23:35:07] <ermine> ygrek: ну фря, да, но она ни при чем тут
[23:35:26] <ygrek> ну strace тогда
[23:35:30] <ermine> ygrek: а чож ты бухтишь тут, когда я троллю :)
[23:36:12] <ermine> ygrek: зачем strace, если ocamldep выводит syntax error, если убрать перенаправление
[23:36:43] <ermine> ygrek: да и все собралось ужо
[23:37:54] <ermine> ygrek: очередной оффтопик: ты в gnome сохраняешь окошки, когда выходишь из иксов?
[23:38:40] <ygrek> ну стоит галочка auto-save настроек в gnome-session
[23:39:24] <ermine> то настройки
[23:39:39] <ermine> а мне надоело каждый раз при включении машины запускать проги
[23:39:58] <ygrek> ну эта галочка и поднимает все проги которые были запущен
[23:40:03] <ygrek> -ы при выходе
[23:40:05] <ermine> может, попробовать xmonad
[23:40:13] <ygrek> xmonad тут ортогонален
[23:40:41] <ygrek> разве что по воркспейсам окна раскидывает сразу
[23:40:49] <ermine> ygrek: а где галочка?
[23:41:14] <ygrek> system - preferences - sessions - session options
[23:41:35] <ermine> ygrek: чо, metacity не восстанавливает по воркспейсам сразу?
[23:42:31] <ygrek> вроде бы нет, если в это время переключать воркспейсы то поги будут открываться где попало
[23:42:41] <ygrek> но точно не скажу - не помню
[23:43:30] <ermine> нету у меня пункта sessions
[23:44:00] <ygrek> apt-cache policy gnome-session
[23:44:25] <ygrek> ой, ну или как там бсдшный костыль для пакетов называется
[23:45:05] <ygrek> хотя вряд ли что gnome-session не установлен
[23:45:47] <ygrek> есть вообще в процессах?
[23:46:17] ermine запустила вручную gnome-sessions-preferences
[23:46:38] <ermine> это оказалось стартап в меню
[23:48:01] <ermine> в общем, посмотрим что оно реально делает
[23:50:36] <ygrek> я так понимаю главное чтобы процесс gnome-session был запущен
[23:53:10] <ermine> ну да
[23:53:19] <ermine> он в .xinitrc указан
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!