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

GMT+3
[00:08:14] ygrek вошёл(а) в комнату
[00:17:05] <ygrek> меня вполне определённо игнорят в jocaml-list
[00:58:42] <ygrek> успел :)
commit 6aa46d6ffbc9d99e5e67951193bd1d203eaa3de3
Date: Wed Nov 18 23:55:05 2009 +0200
Fold callbacks, for testing
[01:03:24] <sceptic> приняли патч?
[01:03:40] <sceptic> а jocaml тоже французишки контролируют?
[01:07:39] ygrek вышел(а) из комнаты
[01:22:44] Mon вышел(а) из комнаты
[01:22:54] Mon вошёл(а) в комнату
[01:45:55] sevenov вышел(а) из комнаты
[01:46:08] sevenov вошёл(а) в комнату
[01:50:12] animist вышел(а) из комнаты
[01:50:26] animist вошёл(а) в комнату
[02:18:55] sevenov вышел(а) из комнаты
[02:54:53] <sceptic> А так замэтчить можно?:
match list1, list2 with
| h1::t1, h1::t2 -> do_some
| ...
[02:58:20] <Typhon> sceptic, если ты имеешь ввиду, матчить два, то надо указать разные идентификаторы для голов (h1, h2). если имеешь ввиду, что списки, с одинаковыми головами, то используй guards
| h1::t1, h2::t2 when h1=h2 -> 0
[02:58:37] <sceptic> я хочу на равенство головы проверить
[02:58:59] daapp вошёл(а) в комнату
[02:58:59] <Typhon> тогда второе :)
[02:59:46] <sceptic> о, точно же
[02:59:49] <Typhon> м. и да, там "иметь в виду", пора спать
[02:59:55] <Typhon> (
[02:59:59] Typhon вышел(а) из комнаты
[03:15:44] abiogenesis вошёл(а) в комнату
[03:22:33] abiogenesis вышел(а) из комнаты
[04:11:13] daapp вышел(а) из комнаты
[04:59:07] daapp вошёл(а) в комнату
[06:29:03] animist вышел(а) из комнаты
[06:29:12] animist вошёл(а) в комнату
[06:33:18] sceptic вышел(а) из комнаты
[07:19:04] ExplicitCall вышел(а) из комнаты
[07:21:05] aloner2k вышел(а) из комнаты
[07:21:57] ExplicitCall вошёл(а) в комнату
[07:46:06] geovit вошёл(а) в комнату
[08:17:27] iNode вошёл(а) в комнату
[08:28:14] gds вышел(а) из комнаты
[08:58:56] gds вошёл(а) в комнату
[09:13:42] aloner2k вошёл(а) в комнату
[10:04:00] aloner2k вышел(а) из комнаты
[10:04:23] Typhon вошёл(а) в комнату
[10:05:12] sceptic вошёл(а) в комнату
[10:22:14] sceptic вышел(а) из комнаты
[10:57:51] sceptic вошёл(а) в комнату
[11:17:40] animist вышел(а) из комнаты
[11:17:53] animist вошёл(а) в комнату
[12:10:45] iNode вышел(а) из комнаты
[12:40:43] iNode вошёл(а) в комнату
[12:54:40] ygrek вошёл(а) в комнату
[13:01:25] gds вышел(а) из комнаты
[13:09:09] ygrek вышел(а) из комнаты
[13:09:10] ygrek вошёл(а) в комнату
[13:15:30] daapp вышел(а) из комнаты
[13:16:24] ygrek вышел(а) из комнаты: Replaced by new connection
[13:16:25] ygrek вошёл(а) в комнату
[13:31:38] ygrek вышел(а) из комнаты
[13:43:15] sevenov вошёл(а) в комнату
[15:30:02] Kakadu вошёл(а) в комнату
[15:58:40] <f[x]> хм, похоже printf в рантайме парсит форматную строку
[15:59:21] Typhon вышел(а) из комнаты
[16:09:08] <ermine> еще как парсит
[16:09:24] <f[x]> а мог бы и не парсить
[16:10:00] <f[x]> реально надо printf переписать на camlp4 и поиметь профит
[16:10:09] <ermine> оно парсит чтобы посылать что надо куда адо
[16:10:43] <f[x]> ermine: у него вся эта инфа есть в compile-time
[16:10:57] <ermine> я где-то давно видела альтернативу на camlp4, где создается просто набор функций на месте форматной строки, чтобы в рантайме не парсило
[16:11:43] <f[x]> вот, это правильно. плюс всякие оптимизации - например прикидка места под буфер (если sprintf итп)
[16:12:23] <ermine> но вот та либла раскрутку не получила
[16:12:36] <ermine> кстати была писана русскоязычным чуваком и анонсилась в caml-list
[16:12:53] <ermine> где-то лет 5 назад, если не больше
[16:13:28] <f[x]> не находится
[16:14:20] <ermine> а что ты искал?
[16:14:52] <ermine> искать имхо надо camlp4 format printf
[16:18:32] <ermine> ну, с современным camlp4 работать не будет
[16:24:36] <f[x]> site:inria.fr - так что-то находится
[16:45:27] Typhon вошёл(а) в комнату
[16:54:18] geovit вышел(а) из комнаты
[16:55:13] <f[x]> ermine: фолды в sqlgg я вчера закоммитил
[16:56:10] <f[x]> > альтернативу на camlp4, где создается просто набор функций на месте форматной строки
не находится
[17:04:27] <ermine> f[x]: а бажку вчерашнюю?
[17:05:48] <f[x]> не, я могу быстро прилепить заплатку для этого частного случая, но проблема более глубокая - NULL'и вообще сейчас не обрабатываются
[17:11:01] gds вошёл(а) в комнату
[17:11:07] <ermine> а пчу генерируемая функция получилась типа option?
[17:13:19] <f[x]> http://www.esterel-technologies.com/technology/free-software/
[17:13:26] <f[x]> ermine: пример
[17:16:00] <ermine> f[x]: пример чего?
[17:16:35] <ermine> f[x]: select sum() в sqlgg создает функцию с выходным типом 'a option, не так ли?
[17:17:32] <f[x]> yup
[17:18:13] <ermine> f[x]: вот непонятно, пчу option, если null не обрабатывается
[17:19:10] <f[x]> потому что бага
[17:19:43] <f[x]> select x where x = 2 limit 1 - тогда option будет работать, а для sum лажа получилась
[17:19:43] <ermine> а с limit 1 баги нет?
[17:20:05] <f[x]> угу
[17:21:38] <ermine> для count(*) кажись тоже num option?
[17:22:30] ermine пытается переделать часть хуков в сульце, ибо тоже лажает
[17:25:24] <f[x]> угу
[17:25:33] <f[x]> хотя логичней было бы просто num
[17:25:55] <f[x]> эх, вообщем все срезанные углы начинают вылазить
[17:26:57] <ermine> ты ж хотел научиться заморочкам у меня? вот, получай!
[17:30:24] <ermine> f[x]: вообще стоило бы поискать описалово функций, если там есть описание возвращаемых результатов
[17:30:34] <ermine> и по нему генерить правильные типы
[17:30:55] <ermine> потом, глядишь, напишешь свой sql сервер на камле
[17:34:16] <f[x]> ermine: я смотрел описание функций конечно
[17:38:51] <ermine> f[x]: а там нет четкого описания выходных типов?
[17:41:21] <f[x]> вопрос в том что взять за "там" - стандарт или конкретные реализации
[17:42:01] <f[x]> работа с NULL отличается, неявные касты типов тоже, операции с датами
[17:42:07] <ermine> стандарт с местныме переопределениями
[17:42:28] <ermine> пофиг ведь, с какой скоростью sqlgg будет работать
[17:42:51] <f[x]> вообщем чётко определено очень маленькое подмножество, а дальше уже надо выкручиваться
[17:44:50] <f[x]> Мне пока выкручиваться особо не надо было поэтому works for me. У тебя есть use-case'ы на которых вылазят траблы - думаю и фиксю, тебе спасибо, feedback очень welcome. На глобальный и надёжный парсер sql я не замахиваюсь.
[17:46:52] <f[x]> вдобавок стандарт написанным фирменным "стандартным" языком, просто чтения не хватит - нужен опыт исопльзования, поэтому и основываюсь на реальных use-case'ах, а не на голой теории
[17:48:01] <ermine> понятно
[17:48:28] <ermine> щас попробую дофиксить хуки и тогда применю фолды там везде где возможно
[17:49:23] <ermine> бага с хуками вылеззла, когда приладила обновленный плагин маркова
[17:49:39] <f[x]> слишком быстро работает? ;)
[17:50:11] <ermine> не, хуки местами фильтруют сами себя
[17:50:57] <ermine> вот цепочка хуков должна довести до маркова, если прежде никто не обработал ввод пользователя, например, если там не было команд
[17:51:22] <ermine> у меня идея хуков состоит в том, что хуки - это список калбэков
[17:51:52] <ermine> берем первый элемент списка, вызываем калбэк и передаем ему хвост хуков
[17:52:29] <ermine> оно само может решить, можно ли продолжать работу остальных хуков или нет, а может и изменить пакет данных, например, чтобы работали алиасы
[17:52:51] <ermine> оно сломалось, когда я решила сделать ответвление для частного случая
[18:01:39] Typhon вышел(а) из комнаты
[18:02:30] Typhon вошёл(а) в комнату
[18:04:54] michael.holub вошёл(а) в комнату
[18:10:40] michael.holub вышел(а) из комнаты
[18:33:47] iNode вышел(а) из комнаты
[19:13:14] <f[x]> хм, а трушный camlp4 парсер - тот что EXTEND - круче чем stream parser ведь?
[19:13:22] <f[x]> т.е. left factoring делать не надо
[19:19:36] f[x] enjoy'ит --> http://www.venge.net/graydon/talks/
[19:21:23] <Typhon> спасибо :) (andrej.com/plzoo/ -- это наверное все видели, но related)
[19:48:45] <ermine> f[x]: stream parser без грамматики, extend - это расширялка грамматики
[19:48:53] <ermine> это две разные вещи
[19:51:49] <f[x]> парсер по определению распознает поток лексем в соответствии с какой-то грамматикой
[19:52:58] <f[x]> camlp4 парсер может использоваться для расширения камловской грамматики, а может и для определения любой другой грамматики с нуля
[19:53:56] <ermine> может конечно
[19:54:07] <f[x]> (ну терминологически неверно, парсер распознает input в соответствии грамматикой, а не определяет оную)
[20:04:23] michael.holub вошёл(а) в комнату
[20:04:55] michael.holub вышел(а) из комнаты
[20:45:57] Typhon вышел(а) из комнаты
[20:52:11] Kakadu вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[21:56:29] sceptic вышел(а) из комнаты
[22:06:59] DimitryKakadu вошёл(а) в комнату
[22:26:01] DimitryKakadu вышел(а) из комнаты
[22:32:59] ygrek вошёл(а) в комнату
[22:37:28] DimitryKakadu вошёл(а) в комнату
[22:37:42] Typhon вошёл(а) в комнату
[22:39:51] <Typhon> а в каком состоянии веб-фреймворк, который обсуждался тут?
[22:47:53] <ermine> в нулевом
[22:48:10] sceptic вошёл(а) в комнату
[22:55:39] ermine поборола багу с хуками, сильно упростив код, хехе
[22:56:41] <sceptic> расскажи
[22:58:30] <ermine> не надо было пытаться скрестить два разнотипных списка в один
[23:00:02] <ermine> теперь можно пробовать фолды
[23:09:56] <ermine> f[x]: а чо делают create table в модуле Fold?
[23:12:24] <ermine> ыхых, а fold реализуется тем же использованием ref
[23:12:56] ermine слегка разочарована
[23:29:47] DimitryKakadu вышел(а) из комнаты
[23:31:11] <ermine> выкинула везде refы в селектах, кроме одного места, там вдобавок еще и экспшн для останова используется
[23:41:47] <ygrek> ermine: ну это quick and dirty, ref'ы в реализации легко убираются без изменения интерфейса, главное проверить годится или нет
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!