Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 29 октября 2012< ^ >
f[x] установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | 4.00.0 уже таки да, см. kamlo_wiki/OCamlChanges
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:17] komar вышел(а) из комнаты
[00:01:46] komar вошёл(а) в комнату
[00:29:21] Andrey Popp вышел(а) из комнаты
[01:03:07] komar вышел(а) из комнаты: Replaced by new connection
[01:03:07] komar вошёл(а) в комнату
[01:05:02] Sun][ вышел(а) из комнаты
[01:18:09] Andrey Popp вошёл(а) в комнату
[01:22:43] komar вышел(а) из комнаты
[01:25:13] komar вошёл(а) в комнату
[02:01:38] Kakadu вышел(а) из комнаты
[02:24:43] Andrey Popp вышел(а) из комнаты
[02:27:03] tilarids вышел(а) из комнаты
[03:03:28] tilarids вошёл(а) в комнату
[04:43:28] komar вышел(а) из комнаты
[04:45:10] komar вошёл(а) в комнату
[06:53:09] ermine вошёл(а) в комнату
[09:06:59] dzhon вошёл(а) в комнату
[09:37:33] Andrey Popp вошёл(а) в комнату
[10:00:58] Andrey Popp вышел(а) из комнаты
[10:15:29] Andrey Popp вошёл(а) в комнату
[10:25:01] Sun][ вошёл(а) в комнату
[10:45:38] Andrey Popp вышел(а) из комнаты
[11:05:50] dzhon вышел(а) из комнаты
[11:06:32] Andrey Popp вошёл(а) в комнату
[11:09:18] dzhon вошёл(а) в комнату
[11:29:31] Andrey Popp вышел(а) из комнаты
[12:05:26] ftrvxmtrx вышел(а) из комнаты
[12:05:45] dzhon вышел(а) из комнаты
[12:07:18] dzhon вошёл(а) в комнату
[12:15:12] Andrey Popp вошёл(а) в комнату
[12:30:25] Kakadu вошёл(а) в комнату
[12:56:55] ftrvxmtrx вошёл(а) в комнату
[13:06:52] dzhon вышел(а) из комнаты: Replaced by new connection
[13:06:53] dzhon вошёл(а) в комнату
[13:29:24] <f[x]> в мантисе тикет на 72 коммента щ_Щ
[13:50:05] komar вышел(а) из комнаты
[13:52:44] komar вошёл(а) в комнату
[14:01:25] Typhon вышел(а) из комнаты
[14:33:45] tilarids вышел(а) из комнаты: Machine going to sleep
[14:51:07] ftrvxmtrx вышел(а) из комнаты
[14:53:05] Typhon вошёл(а) в комнату
[14:56:31] ftrvxmtrx вошёл(а) в комнату
[15:02:37] tilarids вошёл(а) в комнату
[17:14:45] komar вышел(а) из комнаты
[17:17:25] komar вошёл(а) в комнату
[17:38:47] Sun][ вышел(а) из комнаты
[17:56:18] komar вышел(а) из комнаты
[17:58:46] komar вошёл(а) в комнату
[19:03:11] dzhon вышел(а) из комнаты
[19:13:12] tilarids вышел(а) из комнаты: Replaced by new connection
[19:13:15] tilarids вошёл(а) в комнату
[19:15:10] Kakadu вышел(а) из комнаты
[19:20:09] komar вышел(а) из комнаты
[19:22:19] komar вошёл(а) в комнату
[19:40:20] komar вышел(а) из комнаты
[19:41:47] komar вошёл(а) в комнату
[20:00:49] Kakadu вошёл(а) в комнату
[20:21:23] ftrvxmtrx вышел(а) из комнаты
[20:24:51] dzhon вошёл(а) в комнату
[21:02:06] ftrvxmtrx вошёл(а) в комнату
[21:03:37] dzhon вышел(а) из комнаты
[21:08:41] <Andrey Popp> у меня проблема — хочется каждую вершину дерева промаркировать каким-то типом — это значит что корень дерево должен иметь N переменных типов, где N — количество узлов в дереве
[21:09:05] <Andrey Popp> есть какая-нибудь уловка для того, что бы это выводилось само на уровне типов
[21:09:30] <Andrey Popp> в какую сторону вообще смотреть, кто так умеет?
[21:11:20] <f[x]> в смысле типом?
[21:11:25] <f[x]> точно не конструктором?
[21:11:31] <Andrey Popp> типом
[21:11:38] <f[x]> полиморфные варианты не?
[21:11:45] <Andrey Popp> не, типом
[21:11:55] <Kakadu> Цифры Черча на типах?
[21:12:03] <f[x]> и какой будет резудьтирующий тип?
[21:12:11] <Andrey Popp> ну видимо да...
[21:12:12] <f[x]> он получается зависит от числа узлов?
[21:12:16] <Andrey Popp> угу
[21:12:22] <f[x]> тогда это зависимые типы
[21:12:25] <f[x]> а такое низя
[21:12:51] <Andrey Popp> точно?
[21:13:07] <Andrey Popp> вроде же можно, если операции над таким типом монотонные
[21:13:14] <f[x]> но gds должен возбудится на упоминание зависимых типов, может что расскажет
[21:13:38] <f[x]> минимум арность типа зависит от рантайма
[21:13:42] <f[x]> т.е. тип зависит от данных
[21:13:48] <f[x]> т.е. в камле - no way
[21:14:18] <Andrey Popp> ok
[21:14:24] <Andrey Popp> придётся camlp4 генерировать
[21:14:36] <Andrey Popp> у меня всё равно такие конструкции не в runtime будут создаваться
[21:15:47] <Andrey Popp> эх. а в scala path-dependent types есть
[21:15:59] <Andrey Popp> хм... а functor'ами нелзья такое заэнкодить?
[21:16:15] <f[x]> чтобы само выводилось?
[21:16:17] <f[x]> вряд ли
[21:16:59] <f[x]> вообще звучит как знатное извращение
[21:17:16] <ermine> как в камле обрабатываются рекурсивные структуры, если для резолвинга нужно искать в хэштаблах, но туда еще не попало из-за рекурсии?
[21:17:50] <ermine> типа let rec a = 1 + b and b = 2 + a, где a и b надо искать в хэштаблах!
[21:18:09] <ermine> отвечает Kakadu
[21:18:19] <Andrey Popp> какие-нибудь promises
[21:18:53] <ermine> чо?
[21:19:07] <Kakadu> ermine: оно не компилтся
[21:20:57] <ermine> ну, была такая мечта :)
[21:21:05] <ermine> но вообще можно в список
[21:22:04] <ermine> let rec a = 1 :: b and b = 2 :: a in a
[21:22:36] <ermine> правда мне не нужен бесконечный список, а в b уже подцепить значение a
[21:23:06] <ermine> gds: спасай, а....
[21:24:11] <ermine> gds: за гениальное решение обещаю прочитать третью главу по coq
[21:24:44] <f[x]> ermine: а скажи чему будет равно значение a и b после выполнения этого выражения?
[21:25:28] <ermine> f[x]: какого этого?
[21:25:48] <f[x]> let rec a = 1 + b and b = 2 + a
[21:25:49] <ermine> f[x]: ну мое выражение было сильно упрощенным примером из жизни xsd
[21:26:02] <ermine> d xsd позволяются рекурсивные сложные типы
[21:26:29] <ermine> типа type a = A of a
[21:27:03] <f[x]> let rec a = lazy (1 + !!b) and b = lazy (1 + !!a);;
[21:27:20] <f[x]> очевидно при вычислении фэйлится
[21:27:29] <f[x]> так что непонятно что ты там ловишь
[21:29:03] <ermine> аналог type a = A of a
[21:29:26] <f[x]> type a = A of a;;
[21:29:30] <f[x]> легко :)
[21:29:30] <Andrey Popp> ermine: http://stackoverflow.com/questions/10578339/packrat-parsing-memoization-via-laziness-in-ocaml — вот там пример со списками вроде есть
[21:29:40] <ermine> type a = b and b = A of a
[21:30:18] <Andrey Popp> ну promise — это список длинной в 1
[21:33:40] <ermine> не вижу
[21:33:49] <ermine> видимо не нахожу нужную диагональ
[21:36:03] <ermine> там не видно ни заначек в сторадж, ни поиска в нем
[21:36:23] <gds> Andrey Popp: ну, промаркируешь, дальше что?
[21:37:37] <Andrey Popp> ermine, сорри я ocaml не знаю, просто это похоже на mutual recursive memoization
[21:38:43] <ermine> f[x]: ы?
[21:39:02] <Andrey Popp> gds, мне кажется мне это уже не нужно
[21:39:12] <f[x]> ermine: те типы которые ты пишешь вполне кушаются топлевелом
[21:39:37] <gds> однако, gadt'ов достаточно.  Но что с этим делать -- вопрос, конечно.
[21:39:57] <ermine> f[x]: да, компилятся, а вот их аналог мемоизить и находить в сторадже надо!
[21:40:11] <Andrey Popp> gds, ок, спасибо почитаю про gadt
[21:41:21] <gds> ermine: про let rec в хештаблицах -- с арифметикой не работает, со списками работает ровно твой кодэ.
[21:41:50] <ermine> f[x]: в xsd парсишь текущий complexType элемент, в его теле есть зависимость от другого complexType, берешь его, парсишь, через несколько итераций какой-нибудь сложный тип хочет получить из стораджа значение первого complexType
[21:42:15] <ermine> неважно уже вычислено полное значение или нет
[21:42:16] <Andrey Popp> точно packrat parsing
[21:42:55] <ermine> мемоизация - это Laxy.t
[21:43:15] <ermine> не люблю я lazy, но наверное придецца
[21:43:19] <gds> Andrey Popp: если поймёшь гадты по http://okmij.org/ftp/ML/GADT.ml -- поймёшь принцип, как оно работает.  (по сути, просто протаскивается равенство типов.)
[21:43:43] <ermine> правда непонятно как сунуть в сторадж то, что не дошло до конца функции парсера
[21:44:58] <gds> ermine: про lazy -- либо будешь явно долбаться с поиском циклов, либо бери ocaml-lazy-labelled.  Если же циклы таки могут быть, то эта библиотека не всегда подойдёт.  Например, окамловские rectypes я бы ей не обрабатывал уж точно.
[21:46:47] <ermine> gds: да циклов у меня немеряно, зависит от длины файла xsd
[21:47:18] <gds> именно циклов вида let rec a = b + 1 and b = a + 1 ?
[21:47:59] <ermine> хуже
[21:48:44] <gds> "нормализовать" это можно простым вычислением (не важно, в каком порядке) или нет?
[21:49:05] <ermine> разбор xsd сейчас идет так - берем первый элемент из xsd, разбираем, в теле его есть ссылки на другие элементы из файла - в процессе резолвинга их разбираем следующие после первго элемента элементы, пока не срезолвится то что надо
[21:50:04] <gds> ну и в чём проблемы?
[21:50:24] <ermine> у меня еще вчера работал императивный вариант разборщика, оно работает с некоторыми оговорками
[21:50:35] tilarids вышел(а) из комнаты: Machine going to sleep
[21:50:55] <ermine> gds: ну в этом случае я ведь еще не заначила никуда первый элемент
[21:51:19] <ermine> gds: значит просто не знаю в каком месте заначить надо
[21:51:46] <ermine> ладно, есть варианта куда вставить lazy, попробую
[21:52:03] <gds> я бы такое говнище через лентяйку разбирал, но зависит от конкретики.
[21:52:09] <ermine> всё равно деваться больше некуда
[21:52:23] <gds> есть куда, и вполне.
[21:57:22] <ermine> ладно, завтра опробую, а щас пора на боковуху
[21:57:30] <ermine> спасибо за моральную поддержку
[21:58:06] <gds> ermine: учитывай, что lazy -- почти что ref (option 'a)
[21:59:37] <ermine> потом решила, что это не православно
[22:00:28] <ermine> ну вчера у меня было как раз ref, только засовывала туда "базовый тип", который потом подменялся на правильный
[22:00:40] <ermine> черт, спутала команды ткаббера
[22:01:23] <ermine> споки
[22:01:25] <gds> кстати, я уже начал сегодня писать статейку "практический опыт использования coq".  Час-полтора мучил, но это ещё не половина, видимо.
[22:01:28] ermine вышел(а) из комнаты
[22:03:45] komar вышел(а) из комнаты
[22:05:57] komar вошёл(а) в комнату
[22:12:54] <Typhon> gds: круто!
[22:13:57] <Andrey Popp> gds, вау, это интересно, я на strangeloop посещасл coq session, но там как-то дальше игрушек дело не пошло
[22:22:47] <Andrey Popp> gds, кстати gadt мне подойдут, спасибо
[22:22:59] dzhon вошёл(а) в комнату
[22:23:33] tilarids вошёл(а) в комнату
[22:36:40] Typhon вышел(а) из комнаты
[22:44:17] Andrey Popp вышел(а) из комнаты
[23:16:45] komar вышел(а) из комнаты
[23:19:28] komar вошёл(а) в комнату
[23:45:48] f[x] вошёл(а) в комнату
[23:48:54] komar вышел(а) из комнаты
[23:50:48] komar вошёл(а) в комнату
[23:56:02] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!