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

GMT+3
[00:13:40] <ygrek> а libc-dbg поставил
[00:13:51] <ygrek> ?
[00:43:53] Kakadu вышел(а) из комнаты
[01:05:39] komar вышел(а) из комнаты: Replaced by new connection
[01:05:39] komar вошёл(а) в комнату
[01:07:53] shaggie вышел(а) из комнаты
[02:41:05] ygrek вышел(а) из комнаты
[09:26:41] ermine вошёл(а) в комнату
[10:11:37] Kakadu вошёл(а) в комнату
[10:50:53] <ermine> xsd - это засилье рекурсивных модулей
[10:50:55] <ermine> ужос
[10:51:32] <ermine> не запутаться бы
[10:59:55] ermine думает, что надо опять менять кое-какую концепцию в своей поделке
[11:57:47] ygrek вошёл(а) в комнату
[12:35:58] ygrek вышел(а) из комнаты: Replaced by new connection
[12:35:58] ygrek вошёл(а) в комнату
[13:03:12] <komar> Чо, где xsd?
[13:03:57] <komar> Если кто-то собрался это трогать, то могу помочь отговорить.
[13:05:17] <ermine> ну помогай
[13:05:33] ermine внимательно смотрит на комара
[13:05:56] <ermine> щас пытаюсь додумать как мапить на окамлевую структуру содержимое хмля
[13:06:22] <ermine> парсинг xsd в принципе несложен, если только тоже додумать, что является результатом парсинга sd
[13:07:17] <komar> Хочешь xsd -> caml types?
[13:08:35] <ermine> ага, и обратно, правила декодинга и енкодинга понятно как строить, непонятно только как выглядит результат в камлевых типах
[13:09:44] <komar> Мне тоже.
[13:10:04] <ermine> а что тебе понятно?
[13:10:07] <komar> Можешь изобьрести дусю, но она наркоманство.
[13:10:22] <ermine> мне осознать как парсить xsd помог сам XMLSCheme.xsd
[13:10:58] <ermine> в общем, пока допишу парсинг xsd, потом посмотрим что можно будет сделать
[13:11:46] <ermine> все утро еще пыталась поделить кашу в голове на правильные тарелки
[13:12:50] <komar> Давай по-другому. Чем тебе не угодил глобальный и надежный Element of (string * (string * string) list * xml list)?
[13:14:43] <ermine> для него xsd не нужен, просто парсишь тупо xml
[13:15:09] <ermine> а у меня задача, имея описание xsd, гнать в типы камла и обратно
[13:15:21] <ermine> автоматически
[13:15:30] <ermine> под рукой 125 штук xsd
[13:15:36] <komar> Дело в том, что <pattern value="((((\+|\-)?((\d+)))|((\+|\-)?(((((\d+)?\.(\d+))|((\d+)\.))([eE](\+|\-)?(\d+))?)|((\d+)([eE](\+|\-)?(\d+))))))(em|ex|px|pt|pc|cm|mm|in|%)?)"/> из xsd ты в камловый тип не засунешь.
[13:16:06] <komar> Разве что делать на каждый модуль с функциями сериализации и исключениями в случае некорректных данных, лол.
[13:16:40] <komar> А вот такую хренотень в реальные xsd-схемы любят сувать, чо.
[13:16:42] <ermine> ну да, все они отдельные модули
[13:17:00] <ermine> а типы камла - это семантика уже
[13:17:02] <komar> И будет у тебя норкоманство на порядок хуже дуси, прекращай.
[13:17:34] <komar> Или ты это хочешь сделать не «в помощь разработчику», а чтобы просто валидацию производить в рантайме?
[13:18:00] <ermine> хочешь забесплатно все 125 xsd имплементить руками?
[13:18:19] <komar> Чего их имплементить? Element of (string * (string * string) list * xml list) и вперед.
[13:18:21] <ermine> учитывая, что они могут изменяться и увеличиваться в числе
[13:18:38] <komar> С failwith на каждый чих, лол.
[13:18:56] <ermine> а потом руками искать в твоем Element ту или иную деталь
[13:19:10] <ermine> это уже пройденный этап
[13:19:38] <ermine> ща покажу, что в идеале должно быть
[13:19:39] <komar> function Element ("mytag", ...) -> do_something | _ -> failwith "broken xml", как-то так.
[13:22:11] <gds> можно ещё универсальнее.
function _ -> failwith "broken xml"
тем более, это не ложь в общем случае.
[13:23:45] <ermine> https://github.com/ermine/xmpp/blob/b2aac61038caa2d98037718f9b3468f50e02a7ab/XEP_version.ml
[13:24:17] <ermine> там функции decode/encode, а ниже функция let get, которая позволяет программе не задумываться об структуре хмля
[13:24:27] <ermine> 'nj dhexye. yfgbcfyj
[13:24:36] <ermine> это вручную написано
[13:25:29] <ermine> type t - как раз то, во что xsd маппить должен
[13:25:41] <komar> Во.
[13:28:22] <ermine> типа xsd будет продвинутым левелем наркомании
[13:30:24] <ermine> вот задач три - сгенерить типы и сгенерить две функции encode и decode
[13:34:27] <ermine> собственно, всё возможно, надо только выпить
[13:40:12] <gds> кстати, у меня в кадастре типы данных пока только разрушаются на составные части, надо бы ещё сборку приделать.  тогда подобный парсинг и генерёж xml будет записываться человеческими комбинаторами над представлением типов.  типа, какие поля куда мапить, как их в xml переводить и из xml читать.  конечно, под чисто xml не затачиваюсь.  в простом случае, приведённом выше, из специальных указаний будет: 1. указание, что пихать надо в узил "query" и читать оттуда же, 2. указание, что пустые значения не нужно пихать в атрибуты, и что отсутствующий атрибут эквивалентен "" -- это можно сделать особой "рантайм-информацией о типе", которая будет поддерживаться таких конвенций.
[13:42:29] <gds> придерживаться, конечно.  ну да пофиг, кому оно надо.
[13:47:04] <ermine> эme бьется головой об стол
[13:48:59] <ermine> результат битья: понимание, что надо отдельно мухи и котлеты, то бишь функции парсинга и функции семантики
[13:49:19] <gds> чому?
[13:49:37] <ermine> интересно, можно ли генерить семантику
[13:49:55] <gds> что такое "семантика" в твоём случае?
[13:50:26] <ermine> конверт одного типа в другой в данном случае
[13:50:37] <gds> покажи данный случай.
[13:50:56] <gds> в показанном не было преобразований типов.
[13:51:11] <gds> ну, <query> в запись затолкали, это несерьёзно.
[13:52:51] <ermine> в xsd описано, как парсить сам xsd, там среди прочего хлама описывается содержимое чилдов элемента хмля, там он может состоять из аннотации, определений типа чилдов элемента и набор атрибутов элемента, все они имеют один тип - элемент, а надо что-то с этим еще делать
[13:53:50] <ermine> семантика: берем результат парсинга аннотации и суем в рекорд xsd_element, берем определения типа и суем в соответствующие поля и тд
[13:54:41] <ermine> причем по семантике уже нельзя сгенерить ту самую стркутуру xsd-описания
[13:54:53] <ermine> вот в чем состоит отделение мух от вкусных котлет
[14:02:37] <ermine> komar: ты видел генераторы кода из xsd?
[14:02:48] <ermine> что они собственно там генерят?
[14:05:38] <ermine> кстати, в яве же генерят целые классы на основе xsd
[14:29:23] Kakadu вышел(а) из комнаты
[14:32:15] Kakadu вошёл(а) в комнату
[14:36:23] <komar> ermine: не-а.
[14:38:01] <ermine> komar: а в чем предполагал помочь?
[14:38:12] ermine разочарована
[14:38:24] <komar> > могу помочь отговорить
[14:39:28] <ermine> не, это бесполезно, я давно мечтала о такой няшке
[14:39:57] <komar> Вообще, генерировать типы можно.
[14:40:21] <komar> Но вот эти ендоке/декоде — это обосракция, проверки и израиль.
[14:40:36] <ermine> если как следует выпить для снятия мозга с ручника
[14:41:51] <komar> У меня выходной сегодня.
[14:42:00] <komar> Мозги не включал еще.
[14:43:12] <ermine> та я думаю о мелкой промежуточной стадии
[14:58:22] <ermine> так! кажись додумала
[14:58:37] <ermine> осталось собраться с духом и реализовать
[15:03:57] Typhon вошёл(а) в комнату
[15:10:41] Typhon вышел(а) из комнаты: Replaced by new connection
[15:10:43] Typhon вошёл(а) в комнату
[15:21:36] komar вышел(а) из комнаты: Replaced by new connection
[15:21:37] komar вошёл(а) в комнату
[15:28:34] ftrvxmtrx вошёл(а) в комнату
[15:35:40] ftrvxmtrx вышел(а) из комнаты
[20:33:16] shaggie вошёл(а) в комнату
[22:09:47] Typhon вышел(а) из комнаты
[22:46:31] ermine вышел(а) из комнаты
[23:59:26] shaggie вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!