Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 24 ноября 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+4
[00:00:28] shaggie вошёл(а) в комнату
[00:57:43] Kakadu вышел(а) из комнаты
[01:11:08] Typhon вошёл(а) в комнату
[01:11:28] <bobry> Typhon: может таки перейдем на polymorphic variants?
[01:12:25] <Typhon> bobry, где? для чего? есть чо посмотреть? я какбы не против любых изменений -- пиши @ пул реквесть! (добавляйся в авторы :-) )
[01:12:43] <bobry> так в кобзоне
[01:12:52] <bobry> но у меня мотивация не кошерная -- я ее уже озвучивал
[01:12:57] <bobry> просто шобы не писать Bson.<typ>
[01:13:15] <bobry> а ваще with bson вот-вот заработает :)
[01:14:53] <Typhon> офигенно!
[01:15:30] <bobry> правда не очень понятно что делать с вложенными документами например
[01:15:38] <bobry> ну или вложенными рекордами
[01:41:22] arhibot вошёл(а) в комнату
[01:41:54] arhibot вышел(а) из комнаты
[01:43:11] Typhon вышел(а) из комнаты
[01:45:49] <gds> bobry: про конструирование простых значений -- лучше вывести модуль типа MkBson с функциями, конструирующими что надо, а там -- 1. или простые варианты, 2. или полиморфные, 3. или кто-нибудь потом отломает фиксированный модуль и легко сделает функтор, 4. или кто-нибудь сделает условную компиляцию с нужным модулем вместо стандартного.
[01:47:27] Typhon вошёл(а) в комнату
[01:59:44] shaggie вышел(а) из комнаты
[02:01:18] <gds> bobry: 5. или кто-нибудь (ты!) потом решит поменять парсер и/или способы конструирования, и окажется, что интерфейс "вызови функцию, чтобы сконструировать" будет таки хорошим.
единственное, чего стоит опасаться, это того, что не заинлайнится, однако, по слухам от одэптов мирового х-я, через модули таки инлайнится нормально.
то есть, решение -- чистая выгода.
[02:27:32] Typhon вышел(а) из комнаты
[03:47:47] letrec вошёл(а) в комнату
[03:59:07] ygrek вышел(а) из комнаты
[05:09:46] letrec вышел(а) из комнаты
[05:59:17] gds вышел(а) из комнаты
[05:59:54] gds вошёл(а) в комнату
[07:07:48] gds вышел(а) из комнаты: Replaced by new connection
[07:07:50] gds вошёл(а) в комнату
[07:17:50] komar вышел(а) из комнаты: Replaced by new connection
[07:17:50] komar вошёл(а) в комнату
[07:27:27] komar вышел(а) из комнаты: Replaced by new connection
[07:27:27] komar вошёл(а) в комнату
[08:55:45] Typhon вошёл(а) в комнату
[09:01:46] <Typhon> strlen <https://twitter.com/#!/strlen> Alex Feinberg
Scala got you down? Try OCaml: first class modules (which can be separately compiled and linked), high quality libraries (without DSLexia). ( https://twitter.com/#!/strlen/status/139549785614073856 ) — DSLexia — отличный термин!
[09:03:29] <komar> > high quality libraries
[10:07:12] ygrek вошёл(а) в комнату
[10:12:55] <ygrek> komar: не согласный?
[10:13:29] <Typhon> не согласен — вышли патч %)
[10:39:27] bobry вошёл(а) в комнату
[10:44:48] <bobry> gds: т. е. ты предлагаешь модуль с пачкой функций типа foobar : 'a -> Bson.t?
[10:45:08] <bobry> я вот что -то не очень представляю — как можно сделать такой модуль расширяемым? чтобы можно было добавлять свои типы
[10:51:07] <Typhon> bobry: ну например, вместо просто листов, использовать какие-нибудь хитрокадастровый структуры
[10:52:15] <bobry> да-да, это понятно — не понятно как это реализуется
[10:53:19] <bobry> может кто нибудь в пример ткнуть?
[10:53:40] <komar> ygrek: я использую OCaml.
[10:53:43] <komar> Это очень много.
[10:54:06] <komar> Но на словах «хай кволити либрарес» меня на ржач пробивает.
[10:55:57] <bobry> ну кстати парочку high quality можно найти
[10:58:19] komar взял дубинку и ждет слов «core» и «батарейки».
[11:00:28] <Typhon> core? oO
[11:01:00] <bobry> kaputt!
[11:08:09] <ygrek> что не так с core?
[11:22:00] <bobry> Typhon: или речь о том, чтобы параметризовать encode / decode модулем?
[11:25:51] <Typhon> не, module MkBson : functor (DataTypes : DATA_TYPES) -> val decode … ; val encode end  — что-нибудь такое
[11:26:49] ygrek вышел(а) из комнаты
[11:26:54] <bobry> ок, как в таком случае можно добавить свой составной тип?
[11:34:10] <Typhon> ну я представлял себе сигнатуру DATA_TYPES типа "make_array"; "add_item_to_array" и всё такое. но может чо умнее скажут? :-)
[11:39:48] ftrvxmtrx вошёл(а) в комнату
[11:40:18] <bobry> кто напомнит мне как в camlp4 можно list comprehension заюзать?
[11:43:32] <bobry> #require "camlp4.listcomprehension";; :)
[11:51:47] komar вышел(а) из комнаты
[11:52:09] ermine вошёл(а) в комнату
[13:13:21] Kakadu вошёл(а) в комнату
[13:56:52] <bobry> в общем буду признателен если кто-нибудь разовьет идею Typhon'a
[13:57:00] <bobry> а то я что-то не могу ничего дельного родить
[13:58:29] <f[x]> bobry: json-static смотрел?
[14:16:04] <bobry> f[x]: конкретно на тему расширения не смотрел — там есть?
[14:17:09] <f[x]> да
[14:20:15] <bobry> спасибо, буду смотреть внимательней :)
[14:34:46] <gds> ну вот, в рассылке ещё один вопрос "почему камло/винда не ок".  они что, провоцируют?
[14:38:44] <gds> bobry: я говорил про то, что есть смысл сделать модуль наподобие http://martin.jambon.free.fr/json-wheel-doc/Json_type.Build.html интерфейсом для создания значений.  про расширяемость и составные типы ничего не говорил.
[14:42:07] shaggie вошёл(а) в комнату
[15:15:51] <bobry> ну в общем то если будет pa_bson, то конвертация для составных типов будут делаться препроцессором
[15:21:08] <gds> а сделаешь удобным использование и без препроцессора?  хотя бы на уровне json-wheel.
[15:28:16] <bobry> попробую
[15:28:25] <bobry> кстати подразумевается что я никогда не буду матчить по внутренним типам?
[15:31:54] <gds> я предлагал схему: 1. внутренние типы как Json_type.t (или как там его), 2. конструировать через MkBson или Bson_build в препроцессоре (и там, где хочется код абстрагировать от конкретных типов bson; от аналога Json_type.t), 3. в остальном -- свобода как создания, так и матчинга внутренних типов.  Потому что матчинг по-другому, более универсально, это, конечно, хорошо, но не очень удобно будет.  Наверное, не надо извращаться в ту сторону.
(хотя, как абстракция паттерн-матчинга -- fold -- вполне таки ок для твоего случая.)
[15:58:06] shaggie вышел(а) из комнаты
[15:58:50] shaggie вошёл(а) в комнату
[16:50:33] <Kakadu> а можно уточнить, зачем нужен дополнительный nih.config если есть _oasis
[16:50:35] <Kakadu> ?
[16:50:58] <f[x]> спекучитайда?
[16:52:56] <bobry> они разное делают
[16:53:30] <Kakadu> ну я её читаю, и у меня появляются вопросы
[16:53:41] <bobry> gds: спасибо, я еще вечерком посмотрю внимательно как оно в json-wheel работает. прямо сейчас не очень понятно какой профит от Bson_build, если разрешается матчить по конструкторам Bson.t явно
[16:53:45] <gds> Kakadu: задавай же их!  Сейчас опишу, зачем nih.config
[16:54:02] <bobry> кстати не nih.config а _brb
[16:54:09] <f[x]> описано всё уже, специально раздел "почему не"
[16:54:31] <f[x]> "делают" <- это громко сказано
[16:55:02] <gds> Kakadu: "Специальный  nih.config необходим для точного указания, какие пакеты и откуда  конкретно (вплоть до урлов) можно брать, и куда их нужно ставить в  случае их отсутствия."
[16:55:56] <bobry> f[x]: agreed :)
[16:56:36] <gds> bobry: профит -- половинчатый.  При изменении твоего Bson.t не придётся переписывать генератор и то, что использует Bson_build, хоть и придётся переписывать матчинг.  Но хоть что-то легче.  Далее, выставив Bson_build как основной интерфейс, ты рекомендуешь его для построения bson-термов для внешних пользователей, чтобы они тоже не переписывали.
[16:57:59] <gds> про nihpm -- я там расписал, как "уровни доверия" ложатся на те юзкейсы, которые описаны.  Давайте обсудим как-нибудь.  Вроде -- их введение таки неплохо будет в целом.
[16:59:26] <Kakadu> ага, я что-то понял
[17:00:23] <Kakadu> а в файле _oasis нельзя распознать сильное и слабое указание?
[17:00:37] <gds> да, и не ясно, откуда брать и куда ставить.
[17:02:07] <gds> народ, ваше участие в формировании спеки реально необходимо.
сейчас спека взаимно-противоречива, там накиданы разные идеи из разных кусков обсуждения.  учитывая это, тупо резолвить не надо, лучше опишите, какие вещи нравятся, а какие нет.  в "заметках" или в особым образом отформатированном тексте, чтобы было понятно, что это таки обсуждение.
[17:02:26] <bobry> ссылку на спеку в топик!
[17:02:41] <gds> не могу.
[17:02:53] <gds> точнее, результат будет не очень хорошим, объяснить приватно?
[17:03:36] <bobry> не обязательно
[17:04:00] <Kakadu> мне пришло в голову, что "них" должен уметь генерить свой конфиг по _oasis файлу (рекурсивно). Чтобы человек не ломал мозг при ипсании конфига к своему проекту
[17:04:14] <Kakadu> и да, мы название утвердили?
[17:04:27] <gds> не утвердил никто ничего.
[17:04:50] <Kakadu> спеку будем переводить, или ну этих буржуев?
[17:04:53] <gds> если в них.конфиге нет ничего (или его нет) -- берём всё из системы / из кастом-диры и не паримся.  разумное умолчание, если всё уже есть.
[17:05:07] <f[x]> выношу на рассмотрение комитета постановление о назначение ответственного секретаря для организации рабочей группы по ратификации названия
[17:05:32] <gds> Kakadu: спеку будем сначала работать, а потом, как она превратится в ридми, можно и о переводе думать.  Или, если работать будет нерусскоязычный, тогда переведём.
[17:06:01] <gds> f[x]: мы же договорились, что у нас консорциум!111111111
[17:06:02] <f[x]> в первую очередь наверное интересно примеры юзкейсов и насколько оно на них ложится
[17:06:16] <gds> да, нужны разнообразные юзкейсы.
[17:06:48] <gds> по текущим -- я расписал приемлемость "уровней доверия", но они -- только половина опций, вторая половина -- куда ставить то, чего нет.
[17:07:31] f[x] ещё не смотрел
[17:20:29] <gds> свои юзкейсы я описал.  народ, давайте описывайте свои, там поглядим.
[17:20:50] komar вошёл(а) в комнату
[17:23:54] komar вышел(а) из комнаты
[17:27:12] <bobry> собственной мои юзкейсы уже упомянуты: контора, гарантированная сборка
[17:27:19] <bobry> не верен что могу туда что-то добавить
[17:28:41] <Kakadu> я думаю юзкейсов достаточно
[17:29:00] <bobry> меня очень сильно смущает усложнение с глобальным и локальными индексами
[17:29:21] <Kakadu> мне тут на паре в голову дурацкая идея пришла. Реально ли сделать них согласно CMM2lvl ?
[17:29:39] <bobry> Kakadu: шо це?
[17:30:23] <Kakadu> CMM это херня  для оценки зрелости компаний . 2 левел, это набор практик которые надо применять
[17:30:26] <bobry> Typhon: что думаешь про замену document с (string * Bson.element) list на (string * Bson.element) Hashtbl.t?
[17:30:57] <Typhon> почему не Map? :-)
[17:31:17] <Typhon> вот по идее, надо бы сделать воз-ть как Map, так и Hashtbl использовать
[17:31:22] <Typhon> или List.assoc
[17:31:29] <Typhon> или другой k-v
[17:31:34] <bobry> ну кстати да
[17:31:35] <Typhon> может на кадастр посмотреть?
[17:31:37] <Typhon> %)
[17:31:44] <bobry> а шо там?
[17:32:01] <bobry> с другой стороны, собрать из List.assoc нужную структуру — дело не хитрое
[17:35:53] bobry вышел(а) из комнаты
[17:39:18] <gds> в кадастре -- map_rws -- read-write map with single key binding!  хотя вот, за что мне нравится представление как списка -- за то, что он иммутабельный и для небольшого количества сущностей (до 10) вносит меньше оверхеда, чем map, при похожих характеристиках производительности.
[17:39:42] <gds> но кадастр пока не надо тут, имхо :)
[17:45:10] gds вышел(а) из комнаты: Replaced by new connection
[17:45:12] gds вошёл(а) в комнату
[18:09:00] <gds> Kakadu: не у всех мылочиталка умеет html-разметку сообщений, поэтому рекомендуется либо прямо указывать урлы в тексте, либо делать ссылки вида "here [1]" и в конце всего сообщения "[1] -- http://yoururl"
[18:09:52] <Kakadu> а как оно у тебя выглядит?
[18:14:07] <gds> как синий подчёркнутый текст "here" (ссылка браузера), которая ведёт на .../wiki/Inheritance.  То есть, у меня всё нормально, но не у всех так будет в общем случае.  И про копипасте этого сообщения тоже бида будет -- вдруг кто-то захочет его показать знакомым.
[18:16:35] <Kakadu> а, ну ок
[18:56:27] <Kakadu> да, с инклудами я облажался
[18:56:49] <gds> Kakadu: не только ты :]
[18:57:25] <gds> но это мелочи.  тем более, что "будущая фича", хз нужная ли.  всегда можно сэмулировать, сгенерив нужный nih.config и/или указав два конфига в ком.строке.
[18:57:59] <gds> тем более, все будущие фичи идут лесом, если вдруг что поменяется в концепциях.
[18:59:30] <Kakadu> кхм
[18:59:35] <Kakadu> А Джереми жжот
[19:00:12] <Kakadu> правда фикс креша в inher вызывает больше вопросов, чем ответов
[19:01:40] ozonuku вошёл(а) в комнату
[19:03:15] <Kakadu> интересно, я смогу из си вызвать метод объекта, если он приватный
[19:03:17] ozonuku вышел(а) из комнаты
[19:04:17] <gds> неизвестно, проще проверить.
[19:04:27] <gds> я думаю, что да.
[19:09:18] Kakadu вышел(а) из комнаты
[19:27:21] <gds> ну что ж, я добился своей главной цели в кадастре.  Например, код paste.in.ua/3355/ успешно проходит тесты.
[19:28:02] <gds> при том, что ti_option описано так: http://paste.in.ua/3356/
[19:28:18] <gds> тьфуты, первая ссылка должна быть http://paste.in.ua/3355/
[19:29:18] <gds> то есть, я описываю только то, как "разрушать" значения данного индуктивного типа данных, а дальше алгоритм, умеющий сравнения, сравнивает результат разрушений.  причём он не знает, какие конкретные типы будут в результате разрушения.
[19:29:56] <gds> причём, никакого камловского "полиморфного сравнения" тут нет, всё типобезопасно, внутрь структуры через сишечьку/Obj не хожу.
[19:31:15] <gds> вдобавок к этому, можно переопределить нужные методы так, чтобы, например, сравнение шло через одну функцию, а show через другую (например, скрывая некоторые значения), а hash через третью (если какие-то компоненты не нужно хешировать).
[19:33:45] <gds> пушнул в https://bitbucket.org/gds/cadastr/src
[19:36:18] letrec вошёл(а) в комнату
[19:36:26] letrec вышел(а) из комнаты
[19:36:42] letrec вошёл(а) в комнату
[19:43:31] <gds> на практике это означает то, что 1. перехожу к literate programming tool (в том числе для отладки которой и понадобилось это безобразие), 2. можно думать про парвел, причём очень таки обобщённо -- например, нужным объектам добавлять свойства "ser.json.to"/"ser.json.from", так, что это не потянет за собой зависимость от json-wheel, если в текущем проекте эти свойства не добавляются, 3. ближе к динамической типизации там, где это нужно -- например, можно оформить какие-нибудь преобразования типов (но это опасни).
[19:51:15] komar вошёл(а) в комнату
[19:51:21] Kakadu вошёл(а) в комнату
[20:02:56] Typhon вышел(а) из комнаты
[20:39:57] <ermine> komar: ты рубишь в xsd?
[20:40:12] <komar> Раньше рубил.
[20:40:15] <komar> Сейчас, надеюсь, нет.
[20:40:19] <komar> Спрашивайте ваши вопросы.
[20:40:54] <ermine> komar: а кто за тебя тогда рубил в xsd - какая либла?
[20:41:14] <ermine> komar: в xsd сликшом много разного поиска "в будущем"
[20:41:26] <ermine> не пойму как с этим жить
[20:41:37] <komar> http://komar.bitcheese.net/darcs/xmlfuzzer/schema.ml
http://komar.bitcheese.net/darcs/xmlfuzzer/schema_loader.ml
[20:42:25] <komar> ermine: да вроде нормально.
[20:42:31] <komar> Рекурсия, все дела.
[20:44:04] ftrvxmtrx вышел(а) из комнаты
[20:44:07] <ermine> komar: а как, если парсишь текущий элемент, в котором чилд с атрибутом ref, а само его описание будет разжевано только в следующей рекурсии?
[20:44:33] <komar> Парсь в два этапа, что ли.
[20:45:04] qrntz вошёл(а) в комнату
[20:45:22] <ermine> то бишь?
[20:45:51] <ermine> komar: кстати судя по коду там дуся, а дуся по-моему уже и так умеет xsd
[20:45:59] <komar> Дуся не умеет xsd.
[20:46:04] <komar> Она умеет dtd.
[20:47:56] <komar> В два этапа — это сначала выдери из xml-дерева xsd информацию в удобном для себя виде, но без рекурсий и указателей на чайлды, а просто с текстовым названием чайлдов.
[20:48:22] <ermine> а еще наверное у тебя там махинации с lazy
[20:48:23] <komar> А потом собери из этой PHP-образной субстанции нормальные типы с нормальными рекурсиями.
[20:48:37] <komar> А то.
[20:48:57] <f[x]> komar: ты не понял, нужно в один проход на итератах и с рекурсивными first-class модулями
[20:49:00] <f[x]> иначе не взлетит
[20:49:16] <komar> АКАДЕМОТА
[20:49:37] <f[x]> ДОКАЗАННЫЙ_КОДЭ
[20:49:50] <komar> Вот принеси мне этот код и я повосхищаюсь. сириосли.
[20:50:24] <f[x]> код доказанный есть ложь
[20:50:40] <komar> А работу такими методами с таким говном как xsd я считаю богохульством.
[20:50:43] <Kakadu> походу приватные методы из сишечки не вызвать
[20:50:43] АК вышел(а) из комнаты
[20:51:02] <f[x]> Kakadu: #define private public - маленький чтоле?
[20:51:23] <ermine> да первый этап прошел достаточно легко - весь xml с xsd пропарсен в полном объеме, вот щас как раз со вторым этапом трахаюсь
[20:51:40] <f[x]> komar: у меня просто вечернее разжижение моска, извините
[20:51:55] <komar> Я догадался, не за что.
[20:52:38] <f[x]> так заметно? o_O
[20:52:57] <gds> > o_O
вот так -- таки заметно :]
[20:54:12] <ermine> ну видимо надо на втором этапе трахать полученную на первом этапе структуру несколько раз в одном и том же месте
[20:54:20] <gds> Kakadu: почему?
[20:56:32] <f[x]> ermine как-то излишне брутальна сегодня, нес па?
[20:58:05] <komar> f[x]: пойди xsd попарси.
[20:58:16] <komar> Еще не таким станешь.
[20:58:31] <f[x]> не не, у меня нежный php_serialize
[20:58:36] <f[x]> и делов
[20:59:03] <komar> Он не делает того, что ermine хочет.
[20:59:03] <ermine> f[x]: кутя больше не крэшится?
[20:59:12] <f[x]> хотя видимо скоро понадобится генерилка xml'я, и я бы не отказался от какого-нибудь кодогена
[20:59:25] <gds> не проще ли взять бутылочку вкусного вина, сигару, любимую женщину, и заняться с ней любовью у камина?
[20:59:32] <f[x]> komar: главное что он делает мне то что надо :)
[20:59:49] <f[x]> ermine: а оно до сих пор крэшится?
[20:59:55] <f[x]> вроде ж фиксили?
[21:00:02] <ermine> кто бы мне купил бутылочку бейлиза
[21:00:33] <ermine> f[x]: а какаду обещал, что ты будешь смотреть на ту заветную корку
[21:01:01] <f[x]> ыы, я ж смотрел уже
[21:01:03] <ermine> давно это было правда и неправда - когда еще только начинала писать xsd
[21:01:16] <gds> > f[x]: хотя видимо скоро понадобится генерилка xml'я
опиши условия, что и откуда генерить, может есть идейки (а может и нет).
[21:01:59] <f[x]> а я пока хз, судя по всему надо будет api в xml и в json
[21:02:14] <gds> во, у меня тот же расклад.
[21:02:22] <gds> так а _откуда_ генерить?
[21:02:26] <ermine> щас вы будете делать hih на основе xsd
[21:02:37] <f[x]> хочется очевидно сгенерить из одного описания сразу всё, а получится видимо как всегда руками
[21:02:46] <Kakadu> gds: > [20:55:46] <gds> Kakadu: почему?
caml_get_public_method 0 возвращает
[21:02:47] <f[x]> ну из камлевой структуры какой-то
[21:03:02] <gds> Kakadu: понял, хреново.  Ну это проверить надо было, всё-таки.
[21:03:12] <ermine> а у меня кстати последняя попытка осилить xsd началась с того, что я попробовала написать свое описание условий как генерить xml, но как-то плавно сползла в xsd
[21:04:39] <gds> f[x]: в общем, у меня тут кадастр на носу.  Там всё это делается, только для генерирования из камла надо описать, как эту структуру разрушать (опционально с хинтами типа "какой атрибут куда -- в атрибуты xml или в сущности").  Если есть интерес и если скинешь мне приватно пример xml'я, видимо, что-то можно будет сделать.
[21:04:57] <gds> там принципиально нет препроцессора и завязок на синтаксис, и всё очень расширяемое.
[21:05:23] <bobry> так, на какой стадии наш nih?
[21:05:35] <bobry> почитал комменты и не понял нафига велосипедить includы
[21:05:39] <bobry> убедите меня?
[21:05:39] <gds> bobry: на стадии "f[x] должен посмотреть и отрезолвить".
[21:06:08] <f[x]> gds: пока ничего конкретного нет
[21:06:40] <f[x]> кто вписал инклуды? было ж "на будущее" (ака "когда нечего делать")
[21:06:42] <gds> bobry: "случаи "разной сборки" могут вполне быть, "для  локальной разработки", "для конторского тестирования", "для  гарантированного релиза"=="всё качаем из интернетов".  Если будут общие  куски конфигов -- их не нужно дублировать.  Кроме того, это "возможная  будущая фича", а не "требуемая в первой версии"."
Чем я могу упростить понимание этого абзаца?
[21:06:50] <gds> f[x]: они и есть в будущем.
[21:06:53] <f[x]> ну и ок
[21:07:11] <gds> даже с явным каментом "Кроме того, это "возможная будущая фича", а не "требуемая в первой версии"."
[21:07:27] <bobry> ну ладно -- раз будущее, то все ок
[21:07:31] <bobry> 100500 раз еще все поменяется
[21:07:36] <ermine> gds: а кадастр сможет парсить xml, который сам сгенерит?
[21:08:19] <gds> ermine: если указать, как создавать типы (а не только как их разрушать) -- то да.  функциональность примерно эквивалентна pickles-комбинаторам (!).
[21:08:23] letrec вышел(а) из комнаты
[21:08:52] <gds> bobry: да даже если и не поменяется -- у конфига при разных вариантах сборки могут же быть одинаковые куски?
[21:09:44] <ermine> gds: это сложно - надо описать необязательные атрибуты и необязательные группы чилдов
[21:10:11] <gds> f[x]: как будет конкретика про xml -- сразу отпиши.  мне аж стало интересно, что и куда надо перегонять.
[21:10:43] <f[x]> gds: йоу
[21:11:15] <ermine> конкуренты в чатике
[21:11:16] <gds> ermine: это можно описать вполне.
[21:12:01] <ermine> gds: а вот источник в xsd
[21:12:03] <gds> ermine: нет, в xsd я тебе не конкурент.  кишка тонка.
[21:12:23] <gds> xsd не знает камлотипы и способы создавать/разрушать камлозначения.  в топку.
[21:12:46] <ermine> gds: но возможно чтонить стырить из твоего кода понадобится, ибо с кодом у меня кишка еще тоньше чем у тебя
[21:13:19] <ermine> а пока подумаю как реорганизовать второй этап
[21:14:30] <gds> ermine: зато ты умеешь конкретно наседать на xsd, это тоже в плюс.
[21:14:43] <gds> ermine: ты ТОЧНО посмотрела ocaml-lazy-labelled?
[21:15:14] <gds> чтобы в один этап сделать.  у меня получилось 600 строк vs 150 строк.
[21:15:42] <ermine> gds: нет, но вроде скачала репку когда-то, но вот не думаю даже заюзать lazy
[21:15:58] <ermine> ибо сложно это и страшно
[21:16:39] ermine почитала еще один священный текстик про парсеры, тоже надо опробовать новые идеи в своем проектике с парсером
[21:16:45] <gds> ermine: подумай внимательно.  резолвинг всяких lazy -- страшно в типичном случае с его Lazy.Undefined или как там, но не в labelled-варианте.  посмотри примеры, вдохновись.  я как раз для разбора громатеки делал.
[21:17:32] <ermine> gds: ну я понимаю, что lazy там интересно где предполагаются повторные вычисления
[21:17:39] <gds> да нет же!
[21:17:56] <ermine> а больше оно не нужно
[21:18:03] <gds> lazy чем хорошо, что двух этапов не надо, а lazy-labelled -- тем, что в случае лажи в зависимостях у тебя будет внятная диаговностика.
[21:18:34] <gds> это просто отложенные вычисления, которые, например, захотят сущность, которую ещё не нашли в xsd.
[21:19:07] <gds> и это -- с весьма малым оверхедом в одну проверку тега значения и максимум один условный переход.
[21:20:02] <ermine> gds: без двух этапов не обойтись из-за большого объема документации - читаешь доку и выписываешь какие атрибуты и чилды вон в этом элементе должны быть
[21:20:10] <ermine> это как раз первый этап
[21:20:44] <ermine> и без препроцессора ушли пара тыщ строк на ручную инкрустанцию
[21:21:05] <gds> ну, без трёх этапов, значит.  резолвинг строк в значения можно сделать в виде лентяйки.
[21:21:57] <ermine> на втором этапе строишь структуру по описанию "берешь тут, если имелось на пеовм этапе, если нету, возьми там, а если нету - возьми вон там"
[21:22:36] <ermine> а "вон там" у меня оказалось "в будущем"
[21:23:36] <ermine> поскольку еще раз копаться в будущем в этой доке мне точно не захочется, то надо делать максимально полно
[21:24:16] <gds> ermine: смотри сама.  Если чо, рекурсивные структуры завязывать -- известно, как.
[21:25:26] <ermine> gds: рекурсивные струкруры делать на основе плоского списка
[21:26:14] <gds> и каждый раз пробегаться по списку для резолва!
[21:26:19] <gds> Так Победим!
[21:26:55] <ermine> фи
[21:27:40] <ermine> а еще это вводит мутабельность
[21:27:47] <ermine> ее пока абсолютно нет
[21:28:55] <gds> мутабельность на ленивых значениях -- не мутабельность.  любой х-юга тебе это скажет.
[21:30:31] <ermine> ну мне бы такое lazy, чтобы выполнилось только когда вся структура уже будет построена
[21:31:01] <ermine> value-by-need
[21:31:23] <gds> если нужно именно "выполнить всё и сразу" -- ну пробегись по структуре, дёргая Lazy.force.
[21:31:36] <gds> когда она будет построена.
[21:32:29] <f[x]> вы друг друга поняли
[21:32:42] <ermine> а у нее извращенный тип
[21:32:54] <ermine> у форсилки
[21:33:01] <gds> давайте же обнимемся!  обнимемся!  телепузики любят обниматься!
[21:34:13] <ermine> блин, увели у меня последнюю вафлю
[21:34:31] <f[x]> АДЕКВАТ В ЧАТЕ
[21:34:45] <f[x]> так, пора завязыть
[21:35:13] <gds> завязывать lazy-структуру, tying knots, да!
[21:35:56] <ermine> gds: а как бы такое писали бы на цэ чистейшем?
[21:36:17] <ermine> спека древняя
[21:37:09] <ermine> 2004 год
[21:37:35] <ermine> надо поглядеть в сишнюю либлу, как великие умы осиливали на простых и доступных языках
[21:37:38] <gds> на цэ -- очевидно, enum { unresolved : string ; resolved : sometype }
[21:37:47] <gds> ну и та же лентяйка.
[21:38:58] <ermine> не верю
[21:49:23] <Kakadu> охренеть
[21:49:53] <Kakadu> а что правда в сообщении к коммиту в гите !! заменяется на измененные файлы при коммите?
[21:51:44] <bobry> proof?
[21:51:52] <Kakadu> http://paste.in.ua/3358/raw/
[21:52:49] <Kakadu> хотя это больше похоже на то, что кто-то залез не в ту память
[21:54:08] <gds> Kakadu: лол, это похоже на баш.
[21:54:20] <Kakadu> который из башей?
[21:54:28] <gds> шелл в целом.
[21:54:39] Typhon вошёл(а) в комнату
[21:54:42] <f[x]> ясно баш
[21:55:01] <Typhon> https://github.com/MyLifeLabs/nproc видели такое?
[21:55:08] <f[x]> applauses _to_
[21:55:18] <gds> сраная херня он.  если есть восклицательные знаки -- нужно одинарные кавычки, ибо ему надо внезапно их раскрывать внутри двойных.
[21:55:19] <f[x]> лучше просто thanks
[21:55:52] <Kakadu> f[x]: thanks недостаточно пафосно для именно этого случая
[21:56:00] <f[x]> Typhon: я такое сто лет у себя использую
[21:56:01] <gds> Typhon: не видели, но это хуйже парвела, точно! :]
[21:56:20] <f[x]> Kakadu: пафосно было ходить месяц и ныть что у тебя крэшится :)
[21:56:41] <gds> OVERPATHETIC9000
[21:57:09] <bobry> я смотрю в yojson отказались от Json_build в пользу вариантов
[21:57:10] <Kakadu> что-то количиство капсов сегодня зашкаливает
[21:57:12] <bobry> забавно
[21:57:18] <bobry> Kakadu: то ли еще на выходных будет ..
[21:57:22] <ermine> а еще можно классы заюзать, с ними-то отложить вычисления можно, и не надо разводить вариации типов
[21:57:26] <f[x]> а ещё не ПЯТНИЦА
[21:57:33] <f[x]> ещё НЕ пятница
[21:57:38] <f[x]> мискапс
[21:57:51] gds ШОКЕ с приближающегося1
[21:58:03] <gds> bobry: а чего отказались?
[21:58:04] <Kakadu> через 2 часа начнете гзжэчь?
[21:58:34] <bobry> gds: та пес их (его) знает -- хотя было бы интересно почитать мотивацию
[21:58:37] <ermine> gds: леди скоро вернется? а ты забор уже покрасил?
[21:58:39] <gds> Kakadu: у нас в часовом поясе любят пролонгировать.  Через 4 часа, разве что.  (а раньше было бы "через 3 часа")
[21:59:14] <gds> bobry: пусть они пояснят!
[21:59:40] <gds> ermine: леди -- в шаббат, по идее.  забор -- гм, подумаю.
[21:59:51] <bobry> gds: camlunity требует ответа!!11
[22:00:04] <gds> bobry: Так!  Вместо Победим!
[22:00:10] <bobry> :D
[22:00:40] <bobry> вообще, по мне так полиморфные варианты вполне ок для такого, хотя я особо с ними не игрался, может там есть какие грабли?
[22:01:43] <gds> есть и очевидные: любое носимое значение -- тупель, который выделяется в отдельном блоке.  Кроме того, типизация не ок (для слабаков, хехе!).
[22:02:04] <bobry> пачму тупель? в нутрях в смысле?
[22:02:21] <ermine> тополь
[22:02:28] <f[x]> тополь-м
[22:03:37] <gds> тупель-ы -- потому что полиморфный вариант со значениями выделяет для своих значений тупель.  а обычный -- тегом метит себя, и чуть меньше памяти / чуть быстрее дело.  но это пофиг в целом.  плюются на типизацию в основном.
[22:03:43] shaggie вышел(а) из комнаты
[22:04:17] <gds> кстати, про типы -- http://paste.in.ua/3359/ -- так пишу, и, в целом, радует стиль.  рекомендую.  ну, прихреначьте к original syntax по нужде.
[22:04:55] <bobry> вот оно шо -- yojson еще и не имеет syntax etension'a
[22:05:09] <ermine> ревизед = реверс
[22:05:18] <f[x]> bobry: не може буть
[22:05:20] <gds> ermine: original = perverse
[22:05:21] <bobry> жаль в камле низя как в х-ле -- аннотация типа, значение
[22:05:22] <f[x]> там же atdgen
[22:05:30] <gds> bobry: лол как нельзя
[22:05:51] <gds> bobry: http://paste.in.ua/3359/ 1111111
[22:05:59] <bobry> это не оно
[22:06:18] <gds> ок
[22:06:19] <bobry> val f : 'a -> 'a, шобы как в сигнатурах
[22:06:34] <bobry> а потом let f x = x
[22:06:55] <gds> структуры и сигнатуры -- разные штуки.  не используй сигнатуры, если это доставляет гемор.
[22:07:06] <bobry> f[x]:  иде он там? yojson?
[22:08:41] <f[x]> bobry: http://mylifelabs.github.com/atdgen-tutorial.html#htoc4
[22:09:00] <gds> bobry: ну это придирки же.  определяешь функцию, описываешь её, чо надо.
[22:09:42] <bobry> gds: ага, придирки по большому счету
[22:10:32] <gds> понел.
[22:10:52] <bobry> вощем предлагаю на выходных nih-sprint
[22:11:05] bobry возьмет чего нить покрепче -- по случаю
[22:11:37] <gds> bobry: рано.  я предлагаю f[x] brain-sprint по текущей спеке, так как там его мнение нужно, осеня-осеня!
[22:12:14] <f[x]> press on
[22:12:21] <gds> а так -- идея хорошая.
[22:14:34] <bobry> ну тут ведь главное шобы идея не залеживалась
[22:17:19] <gds> ну да, мне аж для трёх разных текущих целей нужна эта байда.  но без йожжыннай муддрасцци не могу.
[22:20:04] <bobry> gds: у тебя на работке исключительно камель чтоли?
[22:20:14] <bobry> откуда стока проектов?! :)
[22:23:22] <gds> bobry: 1. работка, там порядка 6 либ (будет больше), которые собираю очень извратно, через "ребилдол" (лекарство такое), 2. оверблд -- хочу баш выкинуть к хренам собачачьим, и тут, вроде, есть возможность, 3. изредка делаю людям добро за деньги, а его нужно делать так, чтобы гемора было поменьше.  ведь камло -- обычный такой язык, а пользователям из этого пункта пофиг, на чём написано, главное, чтобы решало задачи.
[22:24:57] <bobry> мотивация понятна
[22:34:45] Typhon вышел(а) из комнаты: Replaced by new connection
[22:34:47] Typhon вошёл(а) в комнату
[22:43:44] <Kakadu> gds: можешь чутка разернуть разницу между централизованным индексом и нет
[22:45:13] <gds> Kakadu: 1. затрахался чуток, отдыхаю мозгом, 2. в гмыле есть уведомление, на которое таки отреагирую.
[22:50:38] <Kakadu> gds: я просто думал тебе не приходят такие увеовмления , но теперь вспомнил что ты --- создатель
[22:52:42] ermine вышел(а) из комнаты
[22:57:47] <gds> Kakadu: Да, Я -- Создатель!  лол.
а вроде бы приходят всем, кто в тредике песал.
[22:59:47] Typhon вышел(а) из комнаты
[23:01:34] <Kakadu> да, но мой тердик новый, поэтому пришло только тебе
[23:03:57] Typhon вошёл(а) в комнату
[23:04:34] <gds> Kakadu: отписал, но мало умного, скорее отсёк потенциально-неумное.
[23:10:37] <Kakadu> угу
[23:12:35] <gds> кстати, напомню (сам чуть не забыл), цель обсуждений спеки -- не "понять лично для себя", а "сделать так, чтобы всем было понятно".  то есть, какие-то отвергнутые варианты нужно явно прописывать как подпункты, какие-то вероятно-хорошие идеи таки тоже, до тех пор, пока тред обсуждения не будет исчерпан.  на худой конец, тупо скопипастить обсуждение в текст.
[23:13:40] Typhon вышел(а) из комнаты: Replaced by new connection
[23:13:42] Typhon вошёл(а) в комнату
[23:17:58] <gds> кстати вот, новые "изобразительные средства" в виде обсуждений свернули меня с пути истиннаго.  в чисто-текстовом варианте все эти пункты были бы записаны как подпункты, и было бы чуть более видно их, с бОльшей вероятностью того, что обсуждение (если закончится положительно) попадёт в общий план.
[23:42:25] <bobry> удивительно что ermine не участвует в обсуждении nih pm
[23:42:35] <bobry> и Typhon?
[23:44:01] <gds> у ermine, поверьте, проблемы гораздо серьёзнее.  Считает xsd чем-то стоящим.  Тут не до pm...
[23:50:16] Typhon вышел(а) из комнаты: Replaced by new connection
[23:50:18] Typhon вошёл(а) в комнату
[23:52:10] <Typhon> Я чят почти не читаю сегодня, есть дела реаллайфовые важные, аж за мкад пришлось выехать :-D но я ща исправлюсь, и хочу спринтить!
[23:52:43] <gds> Typhon: ооо, за мкад???  А там хоть есть жизнь, расскажи?
[23:53:56] <Typhon> Очень холодно тут, как будто за полярный круг выехал!
[23:54:17] <gds> дааа!
[23:56:04] <gds> у меня есть Коварный План.  До выходных осилить спеку более-менее, решить "для первой версии", "для следующих версий".  Далее, разбить это дело на модули, а потом -- pull, update, commit, merge, push, ад, сотона (израиль опционально), где-то в раёне выходных накодить.  А чо бы и нет.
[23:58:45] <Kakadu> тогда получается что мне надо завтра сделать всё то, что я оставлял на выходные
[23:59:26] <gds> всем нужно, а этот раззвездяй из оазис-дб оставил всё на самот#к.  Надо что-то делать.  yes we can lol!
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!