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

GMT+4
[00:22:38] gds вышел(а) из комнаты
[00:26:14] gds вошёл(а) в комнату
[00:36:49] <Kakadu> нада завтра подробно написать почему с lablqt опять всё плохо. Но сейчас спать
[00:37:16] Kakadu вышел(а) из комнаты
[00:38:59] <ygrek> потому-что Kakadu много рассуждает вместо того чтобы трясти?
[00:40:57] <gds> а может, наобормот, надо нарисовать чоткую схему, кто куда.  Ибо там не так просто, а без схемы и вообще онально.
[00:45:50] gds вышел(а) из комнаты
[01:13:27] shaggie вышел(а) из комнаты
[01:15:50] Typhon вошёл(а) в комнату
[01:21:33] <ygrek> > each extra month with Haskell gave me an extra month of new perspective on what it means to compute from type classes to laziness to combinators to, yes, monads. (Man, I feel like someone trying to explain what an acid trip is like.)
[01:25:24] <Typhon> Кстати, вы в курсе, что бумажный русский tapl готов?
[01:27:40] ygrek вышел(а) из комнаты: Replaced by new connection
[01:27:41] ygrek вошёл(а) в комнату
[01:32:06] <ygrek> угу, но зачем?
[01:32:46] ygrek enjoys his english :)
[01:33:03] <ygrek> кста, что там завтра?
[01:33:23] <ygrek> в смысле zmq-beer
[01:52:13] ygrek вышел(а) из комнаты
[01:56:27] Typhon вышел(а) из комнаты
[02:05:28] Typhon вошёл(а) в комнату
[02:07:23] <Typhon> Чота пока там не написали где оно будет, надо либо мониторить страницу в вике про ивент
[02:07:46] <Typhon> Либо я постараюсь держать в курсе, если сам узнаю
[02:08:23] <Typhon> Ну и в любом случае в субботу будет какая-нибудь тусовка :)
[02:31:55] Typhon вышел(а) из комнаты
[05:06:34] letrec вошёл(а) в комнату
[05:06:43] letrec вышел(а) из комнаты
[05:06:59] letrec вошёл(а) в комнату
[06:53:21] letrec вышел(а) из комнаты
[08:14:31] komar вышел(а) из комнаты
[08:38:51] komar вошёл(а) в комнату
[10:00:10] Typhon вошёл(а) в комнату
[10:22:44] letrec вошёл(а) в комнату
[10:22:54] letrec вышел(а) из комнаты
[10:23:17] letrec вошёл(а) в комнату
[10:24:55] komar вышел(а) из комнаты: Replaced by new connection
[10:24:55] komar вошёл(а) в комнату
[10:24:57] ygrek вошёл(а) в комнату
[10:30:44] Kakadu вошёл(а) в комнату
[10:33:55] <Kakadu> gds, ygrek: А это норм что в камле протектед-члены класса станут вдруг публичными? Во что это может вылиться?
[10:44:38] komar вышел(а) из комнаты: Replaced by new connection
[10:44:39] komar вошёл(а) в комнату
[10:47:01] ygrek вышел(а) из комнаты
[11:01:58] ygrek вошёл(а) в комнату
[11:06:01] Typhon вышел(а) из комнаты
[11:11:47] ygrek вышел(а) из комнаты
[11:37:59] gds вошёл(а) в комнату
[11:41:16] <gds> Kakadu: выливается в то, что protected больше не используется.  Для всяческого сокрытия информации используют модули, например.
[11:42:33] <Kakadu> ммм?
[11:42:54] <Kakadu> в смысле в камле протектед не будет использоваться?
[11:43:04] <Kakadu> на это есть контраргумент
[11:43:49] <gds> в смысле -- в окамле нет protected.  погляди манул, его первые части.
[11:44:05] <Kakadu> я знаю, что нет протектед
[11:44:52] <Kakadu> просто я почти уверен, что для того, чтобы сделать обработчик нажатий на кнопки надо уметь переопределять протектед методы
[11:46:10] <Kakadu> http://doc.qt.nokia.com/stable/qobject.html#installEventFilter
[11:48:51] <Kakadu> Ну положим что когда я создаю twin-класс (это типа близнец, АА если смотреть в папку inher) я могу понатыкать паблик методов для вызова протектедов.
[11:49:10] <Kakadu> Но тогда они у меня вылезут в системе типов камла
[11:50:13] <Kakadu> и не совсем мне пока понятно, что делать когда из какого-то метода вылезет qObject, который создавал не я , т.е. у которого нет twin-класса, и т.е. у которого нет методов, вызывающих протектеды
[11:52:59] <gds> ну, вылезут protected.  пока не соображу, плохо ли это.
если вылезет qObject -- создать близнеца и создать камловский объект.  например, вызовом функции, которая сделает new qobject на камловской стороне и new AA на плюсовой стороне.  имя класса можно через рантайм-тайпинфу вытянуть из qt'шных объектов.
[11:53:55] <Kakadu> создать близнеца не годится
[11:54:04] <Kakadu> вроде был
[11:54:06] <Kakadu> бы*
[11:54:12] <Kakadu> ибо это бругой объект
[11:54:17] <Kakadu> другой*
[11:54:32] <Kakadu> у меня сейчас близнец создается с наследованием а не просто оберткой
[11:57:13] <Kakadu> я сейчас задумался о friend классах но видимо не получится ибо для дружбы должно быть предварительно описание дружбы в кутишном классе
[11:58:42] <Kakadu> на JS блоге что-то про ковариантность и контрвариантность написали
[11:59:49] ygrek вошёл(а) в комнату
[12:00:01] <gds> сейчас у меня и голога не варит, и надо сваливать по реаллайф-делам, про объекты ничего не подскажу.
[12:00:14] <gds> про *вариантность -- жалкая пародия на мой пост!  :]
[12:12:00] Typhon вошёл(а) в комнату
[12:35:07] ygrek вышел(а) из комнаты
[12:35:34] ygrek вошёл(а) в комнату
[12:48:01] ygrek вышел(а) из комнаты
[12:48:02] ygrek вошёл(а) в комнату
[12:58:03] ermine вошёл(а) в комнату
[13:12:14] Typhon вышел(а) из комнаты
[13:22:08] letrec вышел(а) из комнаты
[13:54:32] letrec вошёл(а) в комнату
[14:35:07] Typhon вошёл(а) в комнату
[14:47:30] komar вышел(а) из комнаты
[15:01:35] shaggie вошёл(а) в комнату
[15:19:53] <gds> f[x], Typhon, вы там тусить будете?  фотачьки не забудьте опубликовать в рамках программы деанонимизации.
[15:39:25] Typhon вышел(а) из комнаты: Replaced by new connection
[15:39:26] Typhon вошёл(а) в комнату
[15:43:39] <Kakadu> надо бы пожаловаться в камлолист про текущее состояние lablqt
[15:44:50] <gds> ну и ответят "C++ is hard, bayba"
[15:46:19] <Kakadu> может скажут как надо сделать
[15:46:41] <Kakadu> gds: ты кстати голову просветил?
[15:46:42] <gds> кстати да, вероятность есть.
[15:47:53] <gds> просветлил слегка.  думалка работает, но не айс.
чую, надо начать с рисования схемы того, как всё должно быть, в виде картинок/графики.
[15:48:34] <gds> где бы нарисовать?  нужен векторный редактор, онлайн, вебморда.
[15:49:15] <gds> о, есть google drawing
[15:49:30] <Kakadu> если можно обойтись деревяшкой, то есть комаппинг
[15:49:51] <gds> дай урл
[15:51:04] <Kakadu> comapping.com?
[15:52:36] <Kakadu> там правда регаться надо прежде чем что-то делать
[15:53:51] <gds> Kakadu: есть способ и анонимно в гуглах: https://docs.google.com/drawings/d/1xzeGCR1meb93jo6QEa8PzZlprxjjqFliZ6qe9rJ5NEo/edit?hl=en_US
[15:54:04] <gds> в том числе с редактированием дал.
[15:55:19] <Kakadu> ты хорошо относишь ся к программированию в картинках?
[15:59:04] <gds> к программированию -- нет, а вот к планированию -- вполне.
[16:17:20] <Kakadu> я почти уверен что толку с диаграммы не будет
[16:19:27] <Kakadu> общую структуру я понимаю, на я постепенно сталкиваюсь с мелкими частными случаями, которые требуют переделывания/усложнения в деталях
[16:20:09] <gds> в таком случае я делаю диаграмму для себя.  погляди по той ссылке, правильно ли изложил.
[16:20:54] <Kakadu> вроде да
[16:26:22] <gds> ооок, ща пожру и продолжу пописюльки-порисовалки.
[17:00:49] <gds> Kakadu: "protected virtual void keyPressed(KeyEvent*)" -- это текущая проблема?
[17:01:02] <Kakadu> можно сказать да
[17:03:11] <gds> protected смело выкидываем, не?
[17:04:21] <Kakadu> а как тогда научиться обрабатывать нажатия кнопок
[17:04:22] <Kakadu> ?
[17:05:59] <gds> по схеме обработки qt-callback, которую нарисовал.  twin object вызывает окамловский объект.  значение KeyEvent надо преобразовать в значение камлокласса.
[17:12:40] <Kakadu> положим у кутишног объекта один единственный метод protected virtual void keyPressed(KeyEvent*).
Вопрос: какие методы буду у этого объекта в камле?
[17:14:30] <Kakadu> наверное ты скажешь
method keyPressed : keyEvent -> unit
[17:14:49] <gds> я могу тупить, но -- только method keyPressed : X -> unit, где X, в зависимости от специфики, может быть: ref (option keyEvent), если оно и nullable, и может быть изменено в методе, или keyEvent, если не nullable и не может быть изменено.  Ну и два средних варианта -- option keyEvent и ref keyEvent.
[17:15:31] <Kakadu> ну можно и как у тебя, но я хотел подчеркнуть не это.
[17:15:37] <Kakadu> формулируем проблему:
[17:17:51] <Kakadu> положим в каком-то методе какого-то класса мы из метода возвращаем наш QObject и должны сделать из него камлёвый класс qObject. (и у этого класса будет метод какой сказано выше).
Мы понимаем что только что вернутый QObject создавали не мы, у него нет twin объекта, но из него надо сделать камлёвый объект с методом  keyPressed : keyEvent -> unit. Вопрос: каким образом?
[17:22:43] <gds> узнать имя (через runtime type information), по имени узнать указатель на камлоконструктор, передать ему плюсовый объект (указатель на QObject), и кагбэ намекнуть, что создание должно быть таким же самым, как new ocamlobject, но без создания плюсового объекта, а с использованием уже имеющегося объекта.
[17:24:28] <Kakadu> тааак. А что с телом keyPressed  ?
[17:27:37] <gds> да хоть () и всё.  Если самый общий вариант, ref (option keyEvent), то может быть x := Some (new keyEvent), например.
[17:30:25] <Kakadu> ага. Т.е. как бы при вызоыве каждого метода надо проверять хороший ли тип ассоциированоого С++ объекта, и если нехороший, то возвращать какое-то дефолтное значение
[17:31:43] <gds> да вот, надо посмотреть, нормально ли кутэ даёт имя объекта.  вдруг не ок.
[17:33:31] <Kakadu> имя класса, не имя объекта , да
[17:33:32] <Kakadu> *
[17:33:34] <Kakadu> ?
[17:34:57] <gds> тьфуты, конечно да.
[17:41:26] <Kakadu> просто в кути можно ещё имя объекта указывать...
[17:44:15] <Kakadu> осталось прокомментировать последнюю непонятку: если класс плохой мы скорее бросает исключение, чем выдаем дефолное значение, да?
[17:49:54] <gds> Kakadu: вот блин, тут хрен знает, если смотреть на большую картину.  Дефолтное значение == оборачивание всего и вся в sum type (option как пример), либо необходимость сверки keyPress == defaultQtObject физически, либо что-то подобное.  Тут ещё надо знать, в каких случаях там может быть "плохой класс" ( == "имя класса не находится в нашем уютненьком словарике").  Какие-то наследования/расширения?
[17:56:17] <Kakadu> а почему не тупо
method foo ... =
  let cpp_classname = Stubs.get_cpp_classname self#handler in
  if ends_with ~postfix:"_twin" cpp_classname then
     (* call method directly *)
  else raise  YouCantCallThisMethException
?
[18:10:06] <gds> Kakadu: не догнал мысль -- а именно, чего хочешь достичь.
[18:11:12] <Kakadu> Ну я этим как-то разруливаю проблему с дефолным значением, например
[18:29:36] <gds> Kakadu: по имени плюсового класса?
[18:39:23] Typhon вышел(а) из комнаты
[18:45:57] <Kakadu> lf
[18:45:59] <Kakadu> да
[18:47:55] <gds> это такая хитрая оптимизация?
[18:48:13] <Kakadu> это первое призодщее в голову решение
[18:48:17] <Kakadu> приходящее
[18:53:40] <Kakadu> но это не сработает если класс не являеться потомком QObject
[18:53:50] <Kakadu> не является*
[18:54:18] <Kakadu> но это редкий случай. Врядли кому-то понаобится наследоваться от QSize
[18:55:04] <Kakadu> и да, такие вещи как QSize надо будет отображать в камлевые типы
[19:03:32] ygrek вышел(а) из комнаты
[19:04:51] <gds> я сходу не подскажу, как лучше сделать.  в том числе с QSize.
про то, что всё надо будет отображать в камлотипы, я согласен, это просто обязательно.
[19:12:11] <Kakadu> кстати, вот какие мысли
[19:12:51] <Kakadu> положим мы получили указатель на плюсовый объект как что-то типа value. Я знаю что можно его кастовать как си-каст
[19:13:01] <Kakadu> может можно как-то поюзать dynamic_cast?
[19:13:27] <Kakadu> что бы определить QObject это или иная хрень
[19:13:51] <gds> dynamic_cast должен статически, на уровне плюсеков, знать оба класса.  и знать их наследование.  учитывай это.
[19:14:39] bobry вышел(а) из комнаты
[19:16:05] bobry вошёл(а) в комнату
[19:16:44] <Kakadu> да, жопа
[19:32:10] Typhon вошёл(а) в комнату
[19:35:05] <gds> Kakadu: в общем, QSize -- маппить как-нибудь тупо, хоть и копированием в камлообъект.  всё, что от QObject (с их метаинфой) -- создавать камлоклассы и ругать матом/исключениями, если не оно.  Сейчас нужно принять "политику партии".  Такая катит?
[19:41:50] <Kakadu> пойду полежу в ванне, подумаю...
[19:56:39] ygrek вошёл(а) в комнату
[19:58:16] bobry вышел(а) из комнаты
[19:58:21] bobry вошёл(а) в комнату
[20:07:44] <bobry> http://forge.ocamlcore.org/forum/forum.php?forum_id=811 я все пропустил ..
[20:45:38] arhibot вошёл(а) в комнату
[20:46:26] Typhon вышел(а) из комнаты: Replaced by new connection
[20:46:27] Typhon вошёл(а) в комнату
[20:48:10] arhibot вышел(а) из комнаты
[21:00:34] ygrek вышел(а) из комнаты
[21:13:34] Typhon вышел(а) из комнаты
[21:22:16] Typhon вошёл(а) в комнату
[21:22:49] letrec вышел(а) из комнаты
[22:03:00] Typhon вышел(а) из комнаты
[22:43:27] komar вошёл(а) в комнату
[22:51:42] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!