Home
Objective Caml
ocaml@conference.jabber.ru
Воскресенье, 11 декабря 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:10:57] Andrey Popp вошёл(а) в комнату
[00:28:45] Andrey Popp вышел(а) из комнаты
[01:11:20] <gds> "Sylvain has worked with me to enable auto-installation of oasis-db  packages via odb[2].  There's not a large repo of packages[1], but most  of it is auto-installable (run odb to get a list), as long as you have  ocaml and findlib to start from.  The dependencies are automatically  handled and installed from source.  I even have confirmation that it  works under windows, although it definitely needs cygwin there."
лашары.  у нас будет лучше.  только дайте голову собрать воедино.  и про цыгвин лашары.
[01:11:54] <Kakadu> надо просто пнуть f[x]
[01:11:58] <gds> кстати, дамы и господа, вы не против завтра устроить что-то типа брейнсторма -- порешать вопросы, принять тупые и рабочие решения, накодить шось?
[01:13:35] <Kakadu> идея хорошая
[01:13:43] <Kakadu> отличный повод погнать меня спать
[01:13:53] <gds> f[x] халявит.  а я завтра, как понимаю, буду делать чисто свои дела (кроме реаллайфа, где чьи-то дела могут меня слегка занять, но не сильно).
[01:14:20] <Kakadu> мне тоже надо универ-лайф поковырять
[01:14:43] Kakadu вышел(а) из комнаты
[01:15:05] Kakadu вошёл(а) в комнату
[01:15:38] Kakadu вышел(а) из комнаты
[01:16:10] <gds> Kakadu: у меня по графику не очень хорошо будет ложиться раньше, чем через пару часов.  Оттуда и запоздание будет.  Начните новую спеку копированием нужного (mark&copy GC знаете же), на худой конец.
[01:21:12] <bobry> gds: я за
[01:22:30] <gds> bobry: сейчас время есть?  чую, можно кое-что сделать и сегодня.
[01:23:47] <gds> Typhon: интересно твоё отношение к недопакетному менеджеру тоже.  стоит ли, а если да, то как.
[01:30:09] ygrek за завтра
[01:30:22] <gds> блин, народ в рассылке всё ближе и ближе подбирается к тому, что реально нужно.  запретите им!
[01:30:48] <ygrek> не боись, лягушатники сделают всё как обычно!
[01:31:02] <ygrek> с ними опыт
[01:31:17] <gds> ygrek: но надо будет расчехвостить спеку в хвост и в гриву.  там мёртвая точка достигнута.
[01:31:31] <gds> вплоть до mark and copy
[01:31:41] <gds> опыт -- уважаю, респект.
[01:33:06] <gds> в общем, давайте завтра, но, если кто захочет поработать сегодня, сообщите в ближайший час.
[01:36:04] <gds> а про общение с камло-тим думаю, что надо зарегистрировать виртуала с именем Gownodau Pedrosi, и от его имени троллить их, по крайней мере на рассылку будет интересней смотреть.
[01:37:01] <gds> хотя про видеотрансляцию из ванны релоя -- это была хорошая идея.
[01:38:51] Андрей Ковбович вошёл(а) в комнату
[01:58:49] gds вышел(а) из комнаты
[02:16:46] Typhon тоже за завтра, по возможности
[02:21:44] ygrek вышел(а) из комнаты
[02:36:54] Андрей Ковбович вышел(а) из комнаты
[02:44:44] Андрей Ковбович вошёл(а) в комнату
[03:40:48] Андрей Ковбович вышел(а) из комнаты
[03:55:02] Typhon вышел(а) из комнаты
[05:49:34] qrntz вышел(а) из комнаты
[06:01:58] Андрей Ковбович вошёл(а) в комнату
[06:02:17] Андрей Ковбович вышел(а) из комнаты
[06:42:00] letrec вошёл(а) в комнату
[07:52:29] komar вышел(а) из комнаты: Replaced by new connection
[07:52:29] komar вошёл(а) в комнату
[08:21:37] Андрей Ковбович вошёл(а) в комнату
[09:22:23] Андрей Ковбович вышел(а) из комнаты
[09:54:08] ermine вошёл(а) в комнату
[11:33:37] letrec вышел(а) из комнаты
[11:38:12] ftrvxmtrx вошёл(а) в комнату
[11:49:30] Kakadu вошёл(а) в комнату
[11:55:29] <Kakadu> надо быстро поделать свои дела пка gds не проснулся
[11:55:56] <Kakadu> черт, на этой недели такой срач в камлолисте что даже лень читать
[12:01:11] ermine давно экономит время на этом занятии, то бишь не читает мейллист
[12:05:29] f[x] вошёл(а) в комнату
[12:38:46] Kakadu вышел(а) из комнаты
[12:38:55] Kakadu вошёл(а) в комнату
[12:41:08] Andrey Popp вошёл(а) в комнату
[13:24:40] gds вошёл(а) в комнату
[13:32:25] <gds> см. также сообщение от "Jesper Louis Andersen".
[13:32:38] <bobry> morning camlists :)
[13:32:43] <gds> yo
[13:32:58] <bobry> в мл продолжается драма как я понимаю?
[13:33:13] <Kakadu> bonjour
[13:35:32] <Kakadu> ппц, http://vicmartinovich.blog.tut.by/2008/09/24/bon-matin/
[13:40:24] <ermine> тут тоже никто не здоровается
[13:42:35] <gds> я вас всех доброе утро!
[13:42:58] <Kakadu> )
[13:52:22] <Kakadu> https://docs.google.com/document/d/1IzCNK5QsXomErUWp0j9qo9x6xqwfE1Qbp7LzGJdB-Mg/edit
кто хорошо знает английский, посмотрите пожалуйста предпоследний абзац если не лень
[13:53:02] <bobry> Kakadu: надо перевести?
[13:53:26] <Kakadu> с русского на английский
[13:54:04] <bobry> да вроде нормуль тогда :)
[13:54:37] <Kakadu> просто у меня было `by-iterational errors are going to zero`
[13:54:54] <Kakadu> преподше не понравилось
[13:55:27] <bobry> о черт, я не тот абзац смотрел
[13:56:06] <bobry> вообще выглядит довольно инородно, но вроде по лучше чем by-iterational :)
[13:58:15] <Kakadu> в оригинале
"говорят, что система f обладает предельным свойством отслеживания, если для любой последовательности вида 2.1 для которой выполнены неравенства 2.6 найдется такая точка х из М, что 2.7"
[13:58:46] <Kakadu> тьфу
[13:58:53] <Kakadu> я последний абзац напечатал)
[13:59:48] <Kakadu> "Можно рассмотреть другой класс свойств отслеживания, в которых "пошаговые ошибки" стремятся к нулю при стремлении индекса к бесконечности"
[14:00:55] <bobry> думаю сойдет :)
[14:02:12] <Kakadu> https://docs.google.com/document/d/17-4jruYjCeCB3No0o0iriE_0Es70u5WBv3Hv_f6DPeU/
[14:02:21] <Kakadu> https://docs.google.com/document/d/17-4jruYjCeCB3No0o0iriE_0Es70u5WBv3Hv_f6DPeU/edit
[14:02:31] <Kakadu> и ещё тут подчеркнутые места, если не лень)
[14:11:14] <bobry> так шо сегодня, кодить буим?
[14:11:42] <gds> bobry: а сначала спеку довести до ума не следует?
[14:12:24] <bobry> следует, я просто не понял что на сегодня запланировано
[14:12:32] <gds> работа в целом, вроде.
[14:12:36] <gds> какой-то прогресс.
[14:13:15] <gds> f[x] давал "директивы", что именно делать, если кому не хочется работать над спекой, можно и покодить.  только максимально абстрактно и модульно.
[14:13:58] <Kakadu> никто не смотрел на мою барбару?
[14:16:09] <bobry> я смотрел, но давно
[14:17:04] <bobry> у меня кстати nih сейчас ничего не ставит, так задумано?
[14:17:31] <Kakadu> угу
[14:17:34] <Kakadu> а барбара ставит
[14:19:06] <Kakadu> и я думаю что соит обсудить один технический вопрос:(скользкое место)
Как распаковывать архивы? Будем предпологать что в архиве есть директория с исходниками. Как узнать имя этой диры? camlzip и т.п.?
[14:19:49] <Kakadu> или tar -tvf name | grep?
[14:21:27] <bobry> ну если втупую то можно смотреть сколько элементов в распакованной директории, и если там ровно 1 -- делать в него cd
[14:21:56] <gds> и если этот 1 это директория, да.  иначе вполне валидно было бы ругаться на криворукого запаковщика.
[14:23:34] <bobry> ага
[14:24:24] <Kakadu> предлагаю резко перевести на английский наше ТЗи показать всем
[14:25:04] <bobry> да, если odb пойдет в массы -- это будет досадно
[14:25:46] <Kakadu> bobry: если gds поддержит, то это будет кворум
[14:34:38] <gds> его сначала нужно написать, это ТЗ.  Далее, я не очень понимаю, зачем помощь буржуев.
[14:35:19] <Kakadu> ну если делать будем сами, то пора чесаться
[14:35:34] <gds> пора чесать спеку.
[14:37:51] <gds> то есть, если кто хочет помочь -- либо надо кодить типичные функции наподобие "распаковать", "сбилдить" (однако надо посмотреть, что f[x] в репке уже накодил), либо медитировать на спеку.
[14:40:30] <Kakadu> в первую очередь надо понять что будет в нихконфиге
[14:40:47] <bobry> true
[14:40:51] <gds> в нихконфиге будет то, что потребуется на основании спеки и логики работы.
[14:41:21] komar вышел(а) из комнаты: Replaced by new connection
[14:41:23] komar вошёл(а) в комнату
[14:44:21] <Andrey Popp> пэкэдж менеджер разрабатываете?
[14:46:29] <gds> да.
[14:46:33] <gds> типа того.
[14:46:38] ermine только что открыла файлик с именем makrdown.peg
[14:46:48] <gds> точнее, хрень для "скачать-сбилдить-установить".
[14:47:15] <Kakadu> Andrey Popp: вливайся!
[14:47:59] <ermine> gds: падвенду?
[14:48:01] <Andrey Popp> просто видел недавно блог, где ребята пишут о разработке пэкэдж менеджера для haskell — предлагают зависимости определять не номерами версий, а интерфейсами
[14:48:46] <ermine> сколько этой туфты уже есть - GODI, оазисы, apt-get, etc
[14:48:50] <Andrey Popp> кажется для ocaml это тоже подойдёт… вроде бы модули примерно уже так и работают, осталось пэкэджи фечить по этому
[14:48:58] <Andrey Popp> фетчить*
[14:49:30] <Kakadu> Andrey Popp: звучит как изврат, но для х-я это норм думаю
[14:49:42] <Andrey Popp> если что — я тут новенький :-) могу глупости говорить
[14:50:25] <gds> Andrey Popp: не получится чисто интерфейсами.  Представь случай, когда исправляется логика, но не трогаются типы, случай чистого багфикса в коде, например.
[14:50:35] <ermine> да nih - тоже глупость деццкая
[14:50:45] <gds> Andrey Popp: главное говори, а там разберёмся, что куда :)
[14:50:56] <Kakadu> Andrey Popp: gds дело говорит
[14:51:44] ermine вписала в файлик строчку Document <- Block*
[14:52:08] <ermine> f[x]: ты кажись собирался делать маркдаун под рагелем - осилил или нет?
[14:52:56] <Andrey Popp> gds: Понятно, что полностью не получится — придётся вводить понятие версии реализации интерфейса. Но мне всё-таки кажется, что большинство случаев обратной несовместимости покроется исправлениями типов...
[14:53:31] <Andrey Popp> вообщем, есть над чем подумать :-)
[14:54:00] <Kakadu> Andrey Popp:  а ты  сам по жизни на чем прогаешь?
[14:54:22] <gds> Andrey Popp: есть идея пока сделать по версиям, это тупо и гарантированно, а потом прикинуть по интерфейсам.  потому что это непредсказуемо и не гарантирует результат -- ты прав, что надо серьёзно подумать.
[14:55:15] <Andrey Popp> Kakadu: да на чём придётся, sh, python, erlang, scala… чуть-чуть haskell'ом балуюсь, смотрю на ocaml, ats, linearml
[14:56:44] <Kakadu> Andrey Popp: фадиез?
[14:56:54] <Andrey Popp> Kakadu: ?
[14:57:02] <Kakadu> Andrey Popp: F#
[14:57:24] <ermine> фи-шарп
[14:57:30] <Andrey Popp> я не помню когда последний раз windows видел )
[14:57:37] <Kakadu> Andrey Popp: респект)
[15:04:26] komar вышел(а) из комнаты: Replaced by new connection
[15:04:27] komar вошёл(а) в комнату
[15:27:01] shaggie вошёл(а) в комнату
[15:35:02] <gds> brb чем-то похоже на be right back, известное сокращение.
[15:35:54] <bobry> bar
[15:36:09] <bobry> похоже да, но уж очень барбара мне нравится :)
[15:36:15] <Kakadu> я так понял ты дописал в конец?
[15:36:20] <Kakadu> gds^^
[15:37:06] <gds> Kakadu: да, я дал урл на конкретно ту главу.
[15:37:32] <gds> bar -- не катит, "проверку убунтой" проваливает:
$ bar
Программа 'bar' на данный момент не установлена.  Вы можете установить ее, напечатав:
sudo apt-get install bar
[15:38:15] <bobry> gds: так и фик то с ней, в дебиане есть пакет oasis например -- и это совсем не тот оазис который нам нужен
[15:41:01] letrec вошёл(а) в комнату
[15:41:09] letrec вышел(а) из комнаты
[15:41:24] <gds> я не знаю, есть ли там бинарник с названием oasis.  если есть, это печально.  впрочем, я не понимаю, зачем делать конфликты на этапе проектирования, когда можно взять просто другое написание и поиметь практически гарантию отсутствия конфликтов.
[15:41:25] letrec вошёл(а) в комнату
[15:42:57] <bobry> предложения?
[15:43:32] <bobry> кстати не думаю что brb даст конфликт
[15:49:23] <gds> brb не даёт, гуглозапросы типа "brb {command,executable,run,execute}" тоже не наводят на конфликты.
[15:49:33] <gds> итак, убираем название nih/nihpm?
[15:49:57] <Kakadu> +1
[15:50:58] <gds> ещё подумал.  текущий-описанный конфиг не катит, если будем что-то добавлять, опции какие-то.  надо бы его расширить, типа
dep  название_пакета  метод_получения  урл_пакета
, чтобы потом вместо dep можно было указывать другие вещи, кроме зависимостей -- например, какие-то "option"
[15:50:59] <bobry> +1
[15:51:29] <bobry> gds: привлекательность описанного конфига в том что его очень просто закодить, минимум усилий
[15:51:31] <gds> а почему barbra или как там -- какие-то ассоциации?  какие причины появления такого?  какое происхождение?  это важно.
[15:51:49] <gds> bobry: да, но добавить ключевое слово dep для описания зависимостей -- не лишне же?
[15:52:20] <Kakadu> gds: когда я кодил в универе для своих проектов я чтобы не думать выбирал женское имя: фелиситас, аделаида, и т.д.
[15:52:48] <gds> хорошо хоть не евдундоксия со снандульей.
[15:53:17] <bobry> gds: ты про версию 1?
[15:53:29] <gds> dep -- да, чтобы потом не ломать все конфиги.
[15:53:33] <Kakadu> gds: если бабара не нравится, то можно Йеннифер
[15:53:40] <bobry> :D
[15:53:50] <gds> вы аццкие сотоны
[15:53:51] <bobry> gds: а почему не deps = []?
[15:53:55] <gds> не, барбра ок.
[15:54:27] <gds> bobry: для простоты синтаксиса.
[15:55:03] <bobry> хм, ну ок, просто [] требует, чтобы все депсы были рядом
[15:55:16] <bobry> а так, если мы потом добавим еще ключевых слов, будет возможность раскидать dep ... по всему конфигу
[15:55:51] <gds> не будем раскидывать по всему конфигу.
кроме того, предлагаю первой строкой конфига -- "version 1".
[15:56:15] <bobry> vsn?
[15:57:40] <gds> ?
[15:58:03] <bobry> просто предлагаю сократить до vsn
[15:58:22] <gds> мне было бы непонятно сходу, что это такое.  даже сейчас видел моё недоумение.
[15:59:01] <bobry> окей, в эрланге это ходовая аббревиатура, поэтому я по аналогии с ребаром предложил
[16:05:22] <gds> у меня появился реаллайфа кусок, однако спеку версии1 я дописал до уровня, который лично я считаю годным.  прошу вас, прочитайте и осмыслите её ещё раз внимательно, оставьте комментарии, вопросы, обсуждения, а я где-то через минут 20..30 приду и будем точно решать, что дальше делать.
[16:11:12] <Kakadu> bobry: http://paste.in.ua/3436/
[16:11:27] <Kakadu> мне не нравится, что gds написал про формат коныига
[16:11:31] <Kakadu> конфига*
[16:11:51] <Kakadu> он указал как будут описываться зависимости пакетов, но не описал как будет описываться инфа о самом пакете
[16:11:57] <Kakadu> вот мой вариант
[16:24:24] <Kakadu> и ещё интересно что должен указывать юзер, если он хочет другую версию дибы ххх, но у неё есть дополнительный депенденс
[16:28:34] Typhon вошёл(а) в комнату
[16:28:50] <gds> я хочу, чтобы хоть какая-нибудь хрень была сегодня написана, хотя бы до уровня спеки и кусков кода.  потом сделаем в конфиге "version 2" и нормальный конфиг.
всё, что указывает пользователь в конфиге версии1, будет ставиться локально.  если захочет другую версию либы и прочие зависимости -- укажет их в брбконфе и ниипёт.  по крайней мере с тарболами и с hg-урлами можно указать точную версию (либо файл, либо ревизию, либо ветку hg).
[16:29:32] <gds> и пока с ручной сортировкой -- ставиться всё будет сверху вниз.
зависимости внутрипакетные -- потом.
[16:29:52] <Kakadu> понял, зависимостей нет
[16:30:05] <Kakadu> сегодня тула должна уметь пройтись по конфигу и установить всё?
[16:30:24] <gds> поймите, что нужен ХОТЬ КАКОЙ-ТО код.  а указанная мной "версия1" -- как раз нормальное начало.  на которое будем наворачивать всё-всё нужное.  заодно посмотрим, что точно нужно.
[16:30:28] <gds> сегодня -- наверное да.
[16:30:40] <gds> не обязательно со всеми опциями типа fs-src, но как-то так.
[16:31:23] <Kakadu> тогда придется выпилить парсинг файла оазиса из текущей репки барбары
[16:31:51] <gds> давайте может вообще в отдельной репке начнём это дело?
[16:32:06] <gds> чтобы не выпиливать.
[16:32:33] <gds> присунем туда и из старой барбры, и из f[x]'ового кода, он там вроде что-то начал.
[16:33:14] <Kakadu> я думаю быстрее роспилить барбару
[16:33:23] <Kakadu> но я не сильно настаиваю
[16:33:35] <Kakadu> gds: как бобрый решит так и сделаем, ОК?
[16:34:01] <Kakadu> ну или f[x]
[16:34:01] <gds> имхо "новое ТЗ начальной версии => новая репка".
[16:34:13] <gds> старое было по старым ТЗ.
[16:34:31] <Kakadu> старое было вообще без ТЗ
[16:35:17] shaggie вышел(а) из комнаты
[16:35:22] <gds> ну тем более!
[16:35:40] <gds> и да, "кворум из >50%" (в данном случае из троих) -- годно.
[16:42:54] <gds> итак, пока думаем над репкой и прочим, кто хочет написать тип данных и парсер конфига версии1?
[16:45:22] Andrey Popp вышел(а) из комнаты
[16:56:20] <Kakadu> gds: https://github.com/Kakadu/barbra/blob/master/src/download.ml#L12
[16:57:45] <gds> это твой код для твоих целей, правильно?  он, как вижу, не умеет парсить описанное в ТЗ1.
[16:59:12] <Kakadu> почти умеет
[17:12:14] <gds> народ, посмотрите ещё раз внимательно ТЗ1, я там кое-что дописал-уточнил.
[17:14:36] Typhon вышел(а) из комнаты: Replaced by new connection
[17:14:39] Typhon вошёл(а) в комнату
[17:16:39] <Kakadu> мне не нравится пункт про local. Я не понимаю откуда возьмутся эти исходники. Человек залезет в _deps и положит?
[17:16:45] <Kakadu> чем это отличается от fs-src
[17:19:27] <gds> да, человек (или бандлер) положит их в _deps и пропишет local.  почему отдельный случай -- чтобы избежать сравнения "является ли это той же директорией", так как в случае fs-src копирование обязательно, а в случае local -- нет.  то есть, я на уровне конфига/типизации исключаю необходимость копировать исходники, и проблемы, связанные с копированием локально-поставляемых исходников.
[17:20:10] ermine чуток поспала после обеда и во сне поняла, какие принтфы надо добавить в генерируемый парсер, чтобы было видно, что оно делает, проверила - факт, стало видно
[17:21:00] <gds> а почему этот случай -- local -- нужен, это как раз возможность сделать бандл, содержащий всё-всё нужное.  Это в старой спеке было обозначено как МЕГАПРОФИТ, и я согласен, что это очень важно.
[17:21:09] <ermine> теперь видимо идея - надо генерить отладочную версию парсера и без отладки
[17:22:30] <ermine> gds: а в вашем пакет манагере будет работать камлофинд?
[17:22:49] <ermine> если от оазиса избавляться, то и от камлофинда тоже надо
[17:23:08] <gds> ermine: да, пока такая стратегия: всё указанное в конфиге будет ставиться локально, а остальное будет браться системно.  потом будем менять это, в следующих версиях.
[17:23:17] <gds> ermine: кто избавляется от оазиса, а?
[17:23:59] <ermine> gds: я слышала тут, кто-то хотел парсить конфиг оазиса, неспроста это!
[17:24:24] <gds> ermine: не, это фантастика.
[17:25:07] <Kakadu> черт, я хотел сканфом всё распарсить, а тут этт параметр локал после которого перевод строки((
[17:25:13] <ermine> gds: парсить конфиг оазиса - фантастика?
[17:25:37] <gds> Kakadu: легко сканфом!  ща.
[17:25:59] <gds> где-то даже недавно такое делал.
[17:26:02] <Kakadu> мне в голову только два раза сканф применять приходит
[17:26:12] <ermine> а сконф умеет %s = %s\n?
[17:26:40] <Kakadu> вроде да
[17:26:58] <ermine> да ну?
[17:27:13] <Kakadu> # sscanf "asdf фывафыва\n" "%s %s"  (fun x y -> print_endline x;print_endline y ) ;;
asdf
фывафыва
- : unit = ()
[17:27:24] <gds> Kakadu: "%s@\n" -- матчит всё до \n.   Перед этим надо будет пробел поставить, так как "путь не начинается с пробела".  И потом, правда, надо будет обрезать пробелы и \r в конце строки, но это мелочи, забьём на них.
[17:27:33] <Typhon> репа есть в camlunity ? на основе бабры делаем? на основе nih'а? или отдельно?
[17:27:41] <gds> я за "отдельно".
[17:27:49] <Kakadu> я за барбру
[17:28:01] <gds> перетащим всё нужное туда, только реально нужное.  с чистой историей, с чистой совестью.
[17:28:27] <ermine> BuildDepends = a,b, c
d, e
f
[17:28:47] <ermine> а, забыла запятые после c, e
[17:28:49] <gds> ermine: это "ненужно".
[17:29:19] <ermine> так ты депендсы ж хотел вытащить, нет?
[17:29:31] <gds> ermine: в версии1 -- не хотел.
[17:29:37] <Kakadu> # sscanf "asdf" "%s %s"  (fun x y -> print_endline x;print_endline y ) ;;
asdf
- : unit = ()
вроде самый тупой вариант
[17:30:53] ermine скромно навязывает свою тулзу
[17:32:07] <gds> ermine: будет надо -- будем смотреть.  версия1 имеет наитупейшую логику, которую мы сможем быстро накодить и юзать уже хоть что-то.
[17:32:58] <gds> или надо было ещё три недели обсуждать всё в подробностях, зарываться в куче деталей, потом в порыве тупака ложиться лапками кверху и ныть "ой, что-то не получается, что-то непонятно"?
[17:33:41] <gds> версии1 хватает для нормального билда "локальное + опционально системное".  это хорошо, это уже что-то.
[17:33:44] <ermine> gds: я тут почти весь ast от парсера оторвала, и буду доотрывать остальное, поэтому логику дописать видимо не особо проблематично
[17:34:08] <gds> ermine: я уж надеюсь.  но пока цели такой нет.  всё разбирается тупейшими scanf'ами.
[17:34:25] <gds> ermine: заметь, я даже итераты сюда не приплетаю!
[17:34:44] <Typhon> а мне ещё сплитаами нравица парсить %) сплит по  \n, потом сплит по пробельным -- красота! :-)
[17:35:35] ermine насилует маркдаун дальше
[17:36:08] <ermine> куда более успешно, чем комбинаторными парсерами
[17:36:25] <ermine> хаскель вей - в топку
[17:36:38] <ermine> си вей - ура, ура!
[17:36:42] <gds> Typhon: да тоже вариант хороший.  могу даже выдернуть сплит (без Str) откуда-то из amall/cadastr, не проблема.
[17:37:00] <gds> ermine: --enable-brain mode is good too
[17:38:03] <Typhon> в ExtLib есть, без ограничения на длину, правда. в кач-ве екст-стдлиб берём, кстати, что? мне кажется, екстлиба должно хватить :-)
(ну или можно выдирать всё по мере необх-ти, гг)
[17:38:36] <gds> проще выдирать, или в _dep/extlib сразу положить, оттуда через -I использовать.
[17:39:00] ftrvxmtrx вышел(а) из комнаты
[17:39:59] <Typhon> кстати, на какой окамель нацелены, >3.11 или >3.12?
[17:40:14] <gds> я бы на 3.12 целился, он везде есть.
[17:40:46] <gds> впрочем, такое дубовое можно даже на caml-light делать.
[17:47:49] <gds> Kakadu: как точно пишется название проекта?  а то я в brbrb запутался, видимо.
[17:48:19] <Kakadu> на гитхабе?
[17:48:25] <gds> вообще
[17:48:49] <Kakadu> barbra
[17:50:44] komar вышел(а) из комнаты: Replaced by new connection
[17:50:44] komar вошёл(а) в комнату
[17:53:42] <Typhon> https://github.com/camlunity/barbra
[17:54:38] <gds> Typhon:  https://bitbucket.org/gds/barbra/src гыгы
[17:54:56] <gds> впрочем, херня
[17:55:01] <Typhon> пишут Еггог
[17:55:10] <Kakadu> всёравно Йеннифер звучит лучше
[17:55:20] <Typhon> кстати, хорошее название для проекта: eggog
[17:55:30] <gds> Kakadu: слишком обязывающе звучит.
[17:55:37] <gds> Typhon: страшно же!
[17:56:08] <gds> урл -- https://bitbucket.org/gds/barbra/src  -- точно еггог?
[17:57:40] <gds> Typhon: почему https://github.com/camlunity/barbra/tree/master/bin ?
[17:58:08] <Typhon> gds, угу, Access denied, приватный, видимо
[17:58:55] <gds> в рот мне ноги, верно.
[17:58:57] <Typhon> gds, а как? просто в срц сделать brb.ml и не парится типа?
[17:59:14] <gds> ну да, надо честный бинарник ставить, я считаю.
[17:59:27] <gds> можно даже байткодовый, пофиг/
[18:00:52] <gds> итак, кто что хочет кодить, в целом?  давайте определяться, чтобы не было двойной работы.  "где кодить" -- пофиг, сольём, только по типам надо определиться.
[18:03:01] <Typhon> предложение сдеать тип для Source : http://paste.in.ua/3438/ --- что-нибудь такое
[18:03:54] <Typhon> (или классами). check_presence -- доступен ли на машине (есть ли курл, гит, хг, етц.), валидейт -- соотв. ли урл формату, гет -- выкачать (и распаковать) куда-нибудь, в место пригодное, для дальнейшей работы.
[18:03:56] <gds> разбивка задач такая: 1. парсинг конфига в тип данных, видимо "список из зависимостей", где "зависимость" -- имя и способ дОбычи (Http_tar_gz of url | Local).  2. получение зависимости -- по имени и способу добычи создать _dep/имя, содержащее исходники.  3. по содержимому директории запустить билд проекта в нужной дире -- пока ./configure && make && make install с указанными переменными окружения.
[18:04:54] <gds> Typhon: SOURCE.get это что?
[18:05:35] <Typhon> достать по урлу, распаковать, если надо, положить куда надо. вообщем, SOURCE -- это что-то типа пункта 2 в твоей разбивке
[18:06:02] <gds> а по типам -- и что-то типа п.1 (Http_tar_gz ..).
[18:06:24] <gds> ну давайте, кто что берёт из задач?  сам буду брать "по остаточному принципу".
[18:06:26] <Kakadu> я попарсю конфиг
[18:06:51] <gds> Kakadu: от тебя требуется соблюдать типы, стало быть.  давай определяться с типами?
[18:07:43] <Kakadu> http://paste.in.ua/3440/
[18:08:38] <gds> Kakadu: тогда уж type archive_type = Tar_gz | Tar_bz2
[18:09:08] <gds> может стоит ещё vcs_type сделать = Cvs | Darcs | Hg | Git | Svn
[18:16:02] <Typhon> а что с SOURCE и модулями с этой сигнатурой? годная идея? плюс -- можно очень независимо пилить разные способы получения. надо только подумать, как типы whereis и archive_type будут связаны с сорцами. мне пока лезет в голову функтор, для архивных типов, который будет возвращать уже нужный SOURCE
[18:18:31] <gds> Typhon: у меня есть убеждение, что типы данных лучше хранить именно как данные, а не как функции.  поэтому тот конфиг в виде алг.типов -- нужен.  А дальше из него уже и SOURCE можно лепить.  Только пропиши более подробно назначение его элементов, а то мне непонятно было, например, про get.  Другим тоже будет непонятно, а документацию надо держать рядом с кодом.  Как сделаешь -- сообщи, потому что я, видимо, буду брать твой SOURCE в свой кодинг.
[18:22:02] <gds> и давайте в /util/ складывать то, что используем -- пока не считаю нужным тянуть в зависимости весь extlib, а какой-нибудь ext_String.ml -- вполне ок.
[18:22:51] <gds> Typhon: да, видимо, SOURCE генерить функтором, разным для архивов и для vcs.
[18:23:27] <gds> либо, вместо /util/, сразу втянуть /_dep/extlib/
[18:24:48] <gds> почему я так про зависимости -- потому что 1. бандлы -- это очень ок для пользователей, а мы и это будем предоставлять -- почему бы самим не использовать?  2. можно будет /_dep/extlib оторвать потом.  3. ну и из п.1 -- чтобы сразу сбилдилось, имея ocaml+findlib как базу, имеющуюся везде.
[18:26:20] <Kakadu> я предлагаю без extlib. изобретем чуток велоспедов у себя и ОК
[18:26:44] <Typhon> gds, https://github.com/camlunity/barbra/tree/feature-source-types
[18:26:55] <gds> Kakadu: можно втащить велосипеды, это тоже очень ок.
[18:27:07] <Typhon> Kakadu, ну лучше даж просто выдирать, если кол-во выдраного кода превысит критическую массу, подключим зав-ть %)
[18:29:35] <gds> в качестве валидации урлов можно заюзать парсер, сделанный тупо по рфц, вот что он даёт: https://bitbucket.org/gds/amall/src/362412d7f478/src/uri_type.mli
[18:30:05] <gds> Typhon: про SOURCE.fetch -- предлагаю тупой вариант type res 'a = [= `Ok of 'a | `Error of exn ].
[18:30:13] <gds> или `Error of string
[18:30:27] <gds> в чём плюс -- труЪ функционально, есть готовые комбинаторы.
[18:30:49] <gds> вплоть до res_exn : res 'a -> 'a  (* кидает исключение на `Error *)
[18:31:45] <bobry> господа
[18:31:52] <bobry> каков расклад, /me отлучался
[18:32:30] <Typhon> bobry, http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/12/11.html#18:03:56.448787
[18:32:38] <Typhon> + репка в камлунити
[18:33:25] <Typhon> gds, uri_type -- ок, нам, правда, валидировать, наверное, только схему и патх придётся. ну или вообще забить на валидейт -- если сторонняя програма завалится, значит не валидное. для версия1 -- ок вроде бы
[18:33:38] <gds> Typhon: тогда вообще не валидируем.
[18:34:01] <bobry> давайте в гуглодоках напишем кто-что делает
[18:34:25] <Typhon> можно и доступность программы не проверять %) правда тогда чуть сложнее будет определять, почему не скачалось :-)
[18:34:54] <gds> Typhon: да, пока и доступность не будем, стало быть.  Пока так сделаем.  Просто плеваться проваленной командной строкой.
[18:35:27] <Typhon> тогда надо подумать, а нужны ли нам модули? или нужен набор функций fetch для разных типов?
[18:36:35] <gds> Typhon: вроде пока нет.  достаточно будет функции unit -> `Ok of unit | `Error of exn.
[18:37:05] <gds> в неё же можно будет и проверки зафигачить.
[18:37:16] <bobry> я за модули, по модулю на тип
[18:37:16] <Typhon> string -> string -> `Ok of unit | `Error of exn наверное? урл + пакгаге нейм
[18:39:12] <gds> Typhon: проблема в том, что в Local нет урла, где-то есть archive_type, vcs_type.  проще это в unit -> запрятать.
[18:41:54] <Typhon> не пойму, как fetch из unit поймёт, откуда скачивать што %)
[18:43:08] <gds> Typhon: это на случай "без модулей", в замыкании будет указано.
[18:45:17] <gds> то есть, разбираем конкретный тип в одном матче, генерим оттуда функцию, берущую unit, и дальше я её буду вызывать.
[18:46:40] <gds> это те же модули, только со спрятанным состоянием.  всё равно, надо было бы извращаться с функторами, чтобы независимо учитывать и Fs_ | Http _, и _gz | _bz2
[18:47:11] <bobry> может быть сделаем все таки на объектах?
[18:47:29] <Typhon> вот да, мне объекты/модули кажутся тут удобнее, потому что можно отдельно писать это
[18:47:41] <Typhon> а так будет, насколько я понимаю, гигантский матч! :-)
[18:47:45] <bobry> да-да
[18:48:12] <Typhon> с модулями можно фёртс-класс модулес заюзать и прямо вытаскивать модули из какой-нибудь структуры, по типу
[18:48:50] <gds> давайте объекты.
с меня, как я понимаю, виртуальный класс, берущий виртуальный fetch : unit -> res unit и реализующий конкретный install : unit -> res unit на основании fetch и моей логики.
[18:48:54] <bobry> Typhon: для них такой паршивый синтаксис, что лучше не надо
[18:49:55] <gds> да, объектами грамотно такое раскидывать, как я вижу.
[18:50:16] <bobry> install можно как раз независимо от типа пакета делать
[18:50:30] <bobry> точнее для install'a своя иерархию будет, если я правильно понимаю
[18:50:35] <Typhon> угу
[18:50:37] <bobry> OMake / OASIS / Make etc
[18:50:38] <gds> правильно.
[18:50:38] <Typhon> я тоже так вижу
[18:51:00] <gds> значит будет у меня
val install : < fetch : unit -> res unit ; .. >
[18:51:05] <gds> unit res, т.е.
[18:51:16] <gds> res вам показать для присовывания сразу?
[18:51:22] <bobry> просветите меня, что такое res?
[18:51:26] <bobry> да-да
[18:51:31] <bobry> Typhon: ты чего берешь?
[18:51:32] <gds> bobry: это такая MonadError :]
[18:51:35] <Typhon> нипонял про инсталл
[18:51:56] <bobry> тип в студию!
[18:52:04] <Typhon> ну то есть, я вижу так:  res = source_obj.fetch ...
install_obj.install res
[18:52:06] <Typhon> а вы как?
[18:52:32] <bobry> именно
[18:52:52] <Typhon> bobry, https://github.com/little-arhat/manatki/blob/master/lib/manatki.rb
[18:53:20] <Typhon> соот-но, https://github.com/camlunity/kamlo_wiki/blob/master/Res.md -- про камло-еррор-манатки
[18:53:59] <Typhon> Kakadu, как там с парсингом и типами? %)
[18:55:21] <Kakadu> как меня щаебал емакс
[18:55:38] <Kakadu> он хочет вызывать ocamlc если в дире нет Makefile
[18:55:43] <Typhon> ещё думаю, что в source.ml и install.ml должны быть функции, возвращающие по типу источника (и инсталлятора) конкретный сабкласс, чтобы в основном коде матчей здоровых не было
[18:56:01] <Kakadu> хоть в папке src делай свой Makefile что вызывает тот что уровнем выше
[18:56:50] <Typhon> Kakadu, project-root возьми и с его помощью сделай %)
[18:56:55] <Typhon> https://bitbucket.org/little_arhat/confs/src/d8c1e813a6e0/.emacs.d/load/elpackages_init.el#cl-77
[18:57:27] <Typhon> project-root-find-file + https://bitbucket.org/little_arhat/confs/src/d8c1e813a6e0/.emacs.d/load/modes_init.el#cl-116
[18:58:02] <Kakadu> слишком много скобочек )
[18:58:03] <bobry> res это Either чтоли?
[18:59:17] <gds> bobry: res -- это https://github.com/camlunity/kamlo_wiki/blob/master/Res.md
[18:59:36] <bobry> я почитал, просто очень похоже на either
[18:59:54] <bobry> ну раз typhon кует source.ml, то я видимо буду install.ml
[19:00:03] <bobry> не знаю правда зачем для этого отдельные ветки
[19:00:55] <Kakadu> pull
[19:01:02] <Typhon> source.ml куёт gds %)
[19:01:17] <Typhon> может и ветки не нужны, если не нужны, давайте померджимся
[19:01:35] <bobry> думаю что на данном этапе смысла в них немного
[19:01:55] <Kakadu> bobry: +1
[19:03:09] <Typhon> ПОМЕРДЖИЛ @ УДОЛИЛ
[19:03:29] <bobry> молодцом
[19:04:12] <bobry> так эта, gds, ты чего в source.ml пилить буишь?
[19:07:15] <gds> говорите, чо пилить.
[19:07:19] <gds> я отходил.
[19:09:03] <Typhon> ну запилить виртуальный класс для начала в source.ml
[19:09:10] <Typhon> шобы интерфейс понятно было
[19:09:17] <Typhon> *понятен
[19:09:18] <bobry> в общем я беру на себя install.ml тогда, а gds все склеивает :)
[19:09:31] <bobry> да, начать стоит с интерфесов
[19:10:24] <Typhon> олсо, вып-здите, позязя, табы из кода, а то мне их красным подсвечивают %) как и трейлинг-вайтспейсес :-)
[19:13:35] <bobry> олсо, туарег не умеет revised syntax
[19:13:38] <Typhon> а ещё, давайте пока setup-dev использовать, но потом надо не забыть dist-clean и просто setup сделать
[19:13:47] <Typhon> bobry, есть патчи, вроде бы
[19:14:42] <Kakadu> Typhon: я их так и не выпили?
[19:15:14] <gds> я тут снова отходил, реаллайф набигал на меня.
[19:15:17] <bobry> method install : string -> bool res
[19:15:18] <bobry> ?
[19:15:18] <gds> чо делать?
[19:15:24] <bobry> тьфу ты, bool unit
[19:15:28] <bobry> тьфу ты ...
[19:15:33] <bobry> unit res тобишь :)
[19:15:58] <gds> bobry: почему-какой string?  может либо каменты, либо labelled arguments для понимания?
[19:16:05] <bobry> ~path:string
[19:16:25] <bobry> так и было сначала, но потом я подумал шо для функции одного аргумента это слишком жирно
[19:16:35] <gds> path -- куда ставить или откуда ставить?
[19:16:40] <Typhon> gds, "Typhon: ну запилить виртуальный класс для начала в source.ml " во
[19:16:42] <bobry> откуда
[19:16:51] <bobry> куда решит findlib
[19:17:15] <gds> и последний дебильный вопрос: дайте урл репки, где пилите.
[19:17:46] <Kakadu> Typhon: а у меня табы? или у кого?
[19:19:04] <bobry> закомитьте кто нить res?
[19:20:02] <gds> закоммитил бы, дайте правильный урл.
[19:20:39] <Typhon> Kakadu, да, у тебя в config.ml был кусок с табами, почему то
[19:20:41] <Typhon> gds, https://github.com/camlunity/barbra/
[19:20:41] <gds> кстати, на моей практике оказывается, что надо сразу запилить types.ml для типов всей проги.
[19:20:45] <Typhon> gds, уже
[19:20:50] <bobry> true
[19:20:54] <Typhon> в смысле, вынес из config.ml
[19:20:57] <bobry> gds: class types туда же?
[19:21:00] <gds> да
[19:21:41] <Kakadu> Typhon: что-то не вижу я там табов
[19:21:56] <Typhon> Kakadu, ну уже нету %)
[19:22:09] <Kakadu> )
[19:22:13] <Kakadu> afk
[19:22:33] <Typhon> https://github.com/camlunity/barbra/commit/b0a50aa21e636d8c1b3044d512899558ac5cd607#L4L41
[19:24:36] <Typhon> (пользуясь случаем, порекомендую http://radar.lv/node/1934 и соседние передачи -- интересное про музыку)
[19:31:22] <gds> как у этоговашего гита сделать bare repository на основе не-bare?
[19:31:24] <bobry> если что, я щас res в types.ml добавлю
[19:31:40] <bobry> gds: git init --bare && git pull <source>
[19:31:53] <gds> bobry: res -- лучше отдельно имхо.  в types можешь type res вынести, если хочешь.
[19:33:33] <gds> up
[19:33:57] <bobry> okay
[19:34:12] <gds> bobry: если взялся, давай уже присунь ты res, лучше брать отсюда: https://bitbucket.org/gds/amall/src/362412d7f478/src
[19:34:32] <gds> _tags: warn_A -- это важно.
[19:34:35] <gds> добавил
[19:34:55] <bobry> gds: тогда лучше ты :) все таки твой код
[19:34:59] <gds> ок.
[19:35:05] <Typhon> gds, open Common -- а где этот Камон?
[19:35:12] <gds> тьфуты.
[19:35:40] <Typhon> привет, git stage area! %)
[19:36:18] <gds> нет, привет hg-git, ещё чего, буду я этот ваш гит юзать.
[19:36:47] <gds> кстати, setup.{log,data} -- их в репку надо класть?
[19:37:15] <bobry> не, они уже в .gitignore
[19:38:12] <gds> у меня .hgignore :)  ок, учёл.
[19:39:11] <gds> срань какая.  git push говорит, что уже есть коммиты после моего, а после git fetch + hg pull оно их не подтягивает.
[19:39:45] <bobry> гмгм, как так?
[19:41:15] <gds> ан нет, другое дело.
git log:
commit e1303565189bdcf290f90df355141d127a04834d
Author: Dmitry Grebeniuk <gdsfh1+umodni@gmail.com>
Date:   Sun Dec 11 17:37:14 2011 +0200
    misc..
commit f87184427050e9cc6a8155cdebb139c420fe4815
Author: Dmitry Grebeniuk <gdsfh1+umodni@gmail.com>
Date:   Sun Dec 11 17:30:39 2011 +0200
    misc
далее, git fetch ситуацию не меняет, а git pull не хочет в bare работать.
но какие-то изменения были:
$ git push
To git@github.com:camlunity/barbra.git
! [rejected]        master -> master (non-fast-forward)
[19:41:53] <gds> понятно, что я туплю, но где вот -- загадка.
[19:43:19] <Typhon> а откуда там bare ? или это hg-git так работает?
[19:43:51] <Typhon> олосо git pull --rebase -- FTW
[19:44:14] <Typhon> (git up у меня на такое заалиасен)
[19:44:43] <gds> bare я сделал, так как в него нельзя было пушить без этого.
[19:45:11] <gds> git pull --rebase тоже не хочет на bare:
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
[19:45:58] <gds> ау, гитоводы с самым интуитивным гитом, ПАМАЖИЦЕ!1111
[19:46:23] <Typhon> а тут таких нет, вроде, все щитают, что гит -- гогно %)
[19:46:50] <gds> ну ладно, тогда просьба к знатокам поедания.. гита.
[19:46:56] <Typhon> не пойму, зачем тебе bare и зачем тебе локально куда-то пушить? пушить, кстати, можно и не в баре, если в конфигах настрить
[19:49:04] <Typhon> ну тогда тебе надо выкачать из своего-баре (непонятно зачем нужного %) ), потом зафетчить из гитхаба всё, померджить между собой и пушнуть в свой баре (непонятно зачем нужный) и на гитхуб
[19:49:10] <Typhon> тогда везде фаст-форвард будет
[19:50:49] <gds> всё, разобрался!  круто вышло.
[paths]
default = git+ssh://git@github.com:camlunity/barbra.git
[19:51:49] <gds> пушнул кстати.
[19:54:44] <gds> чо, складывать разное в /util/?
[19:54:51] <Typhon> а git pull --rebase вместо git pull лучше тем, что не делает лишних коммитов, типа commit 7ae465d22f2b961c7e2a237d0a4c4043d8b194f2
Merge: 4f4129e f871844
Author: Sergei Lebedev <superbobry@gmail.com>
Date:   Sun Dec 11 19:34:06 2011 +0400
    Merge branch 'master' of github.com:camlunity/barbra
[19:55:05] <Typhon> gds, ext может?
[19:55:25] <gds> ок, /ext.
[19:56:00] <bobry> Typhon: ага, сори, magit по умолчанию без --rebase делает гат
[19:56:43] <bobry> может не util а сразу _deps?
[19:57:15] <gds> а сразу amall не хочу втаскивать, много лишнего кода.
[19:58:30] <Typhon> bobry, мы решили пока выдирать велосипеды из либок, и копировать себе. если получится много кода -- запишем депс
[19:58:51] <bobry> ну, extlib нам с большой вероятностью потребуется
[19:59:23] <gds> ы, а как в _оазисе указать, что файлы в том числе в /ext лежат?
[19:59:32] <gds> .ml-файлы
[20:00:11] <Typhon> хы, походу надо src/ext %)
[20:00:24] <gds> ну допустим, и всё равно, как?
[20:04:39] <bobry> думаю придется х в отдельный пакет (Library) перенести, плюс явно перечислить модули
[20:09:37] Андрей Ковбович вошёл(а) в комнату
[20:10:05] <gds> есть, сделал.  ап!
[20:12:11] bobry прикручивает Arg.parse
[20:14:59] <Typhon> а install? %)
[20:15:36] <bobry> Typhon: без хотя бы чего то работающего сложно
[20:18:28] Andrey Popp вошёл(а) в комнату
[20:20:35] letrec вышел(а) из комнаты
[20:35:15] <gds> народ.  объясните дебилу, что именно пилить.
[20:35:31] <Kakadu> я хз
[20:35:45] <bobry> gds: пили основные интерфейсы
[20:35:51] <bobry> например для source
[20:36:12] <Typhon> gds, ты ж сказал, что source фигачить будешь :-)
[20:36:29] <bobry> как непривычно gdsовский код парсить конечно :)
[20:36:39] <bobry> ... и туарегу тоже
[20:36:45] <Typhon> """Как сделаешь -- сообщи, потому что я, видимо, буду брать твой SOURCE в свой кодинг."""
[20:37:27] <bobry> Typhon: не SOURCE а source_type, объекты же :)
[20:37:38] <Typhon> ну да, да, я ж просто цытирую
[20:38:03] <Typhon> кстати, вот я выдрал тут функу из extlib, мне её положить в common.ml или создать файлек какой-нибудь в src/ext/miniextlib.ml ?
[20:38:45] <gds> Typhon: можешь сразу файлы драть, в src/ext/ext_Module.ml[i], наверное.
[20:39:07] <gds> SOURCE в текущей версии не ок тем, что урлов может не быть -- Local например.
[20:40:41] <Typhon> угу, мы решили, что будут классцы и обжектцы
[20:40:42] <gds> Typhon: про extlib -- цель в том, чтобы быстро и просто всё сделать.  функцию выдрал -- давай в ext/... и потом в Common сделай include Ext_Module, например.  хз.
[20:41:45] <gds> стало быть, классы-объекты,
type source = < fetch : unit -> (unit, exn) res >
и всё.
[20:48:03] <gds> ап, см. types.ml/source#fetch
[20:48:26] <gds> ан нет, криво.
[20:49:39] <gds> ап
[20:50:44] <bobry> gds: а зачем в install вызывать #fetch?
[20:51:26] <gds> предполагаешь, что лучше это всё отдельно вызывать, из "общего цикла"?
[20:51:46] <bobry> да, сначала #fetch потом уже install
[20:51:53] <bobry> какие бонусы твоего подхода?
[20:52:10] <bobry> кстати никто не против если всякие глобальные переменные тип version, base_dir = "_dep" будут лежать в Barbra.ml
[20:52:51] <gds> бонуcы -- прописанная логика последовательности действий.
а вообще, тогда, мне в #install надо будет подавать имя пакета, стало быть.
[20:53:37] <gds> чтобы сделать chdir _dep/pkg
[20:55:05] <bobry> мм, ну ты в #install передаешь <pkg_path>
[20:56:31] <gds> да, не имя пакета, а таки путь, так как проект тоже тем же кодом билдить надо.
[20:58:08] <bobry> вощем та можно и source передавать
[20:58:22] <bobry> тольк #fetch все равно должен быть вызван вне #install
[20:58:23] <bobry> для чистоты
[21:13:53] Андрей Ковбович вышел(а) из комнаты
[21:15:36] <bobry> gds: а почему не class type source = ...?
[21:15:43] <gds> а пофиг.
[21:16:25] ermine вышел(а) из комнаты
[21:29:52] <gds> кстати, with-идиома: https://github.com/camlunity/barbra/blob/master/src/install.ml
[21:30:33] <gds> заодно, я в своём стиле -- дописал amall чуток в плане Res:MonadError, WithM тоже.
[21:33:15] <bobry> что-то я не втыкаю как оно работает
[21:34:49] <gds> src/ext/withM.ml определяет тип
    type withres 'a 'r =
      { cons : 'a -> M.m 'r
      ; fin : 'r -> M.m unit
      }
    ;
-- типично для монадных случаев использования "ресурсов".  'a -- новая дира, 'r -- старая дира.  по использованию (будь то `Ok, `Error или исключение) оно использует fin для возврата в старую диру.
[21:35:19] <bobry> что то типа try-finally видимо
[21:35:26] <bobry> или bracket из х-ля
[21:36:08] <Kakadu> bobry: можешь ещё на with_return у js посмотреть...
[21:37:39] <Typhon> gds, виз-идимоу добавил
[21:37:43] <Typhon> *идиому %)
[21:38:59] <gds> ах каков же я подлец и негодяй :]
[21:39:59] <Kakadu> ай да gds, ай да сукин сын!
[21:40:13] <Kakadu> или как там было?)
[21:40:52] <gds> ну а чего, код работает (проевренно), подходит под "использование ресурса", заодно допилил amall -- не прелесть ли.  А как ещё под гпл выкладывать общий код, умеющий вещи, независимые от бизнес-логики?  только так.
[21:41:09] <bobry> _dep / _deps?
[21:41:27] <gds> bobry: см. ТЗ1, вроде там чётко прописал.
[21:42:19] <bobry> просто мб _deps лучше?
[21:43:05] Andrey Popp вышел(а) из комнаты
[21:43:22] <gds> чего ж раньше молчал?  а так -- вроде пофиг же.
[21:44:18] <gds> bobry: будешь исправлять -- исправь ТЗ и исходники.
[21:44:42] <bobry> та вощем та пофиг
[21:45:05] <bobry> gds: поясни пожалуйста смысл модуля Q?
[21:45:11] <gds> мне точно пофиг.  лишние 's мало нужны в целом.  если исправишь -- исправь всё.
[21:45:21] <gds> bobry: где Q?
[21:45:39] <bobry> Barbra
[21:46:12] <gds> (* для проверки компилируемости: *)
[21:46:20] <bobry> как это работает?
[21:46:36] <gds> чтобы оно по зависимостям проходило.  если Config / Install содержит ошибки, при сборке с Q это будет заметно.
[21:47:17] <gds> пока нет более глубоких зависимостей, мы их эмулируем.
[21:48:41] <gds> дааа, диффы у нас шикарные.
[21:48:51] Андрей Ковбович вошёл(а) в комнату
[21:49:01] <bobry> и нафига оазис пишет пути ..
[21:49:19] <Typhon> у него тикет уже год, наверное, висит про это
[21:49:22] <Typhon> от игрека %)
[21:49:50] <bobry> мда :)
[21:49:53] <bobry> open source powah!
[21:50:03] <gds> и они хотят oasis-db сделать.  спид и позор.
[21:50:34] <gds> тот же игрек правильно сказал, что опасаться дискуссий в мейллисте совершенно не нужно :)
[21:51:33] <bobry> gds: а ты у себя в конторке один на камле пишешь?
[21:52:27] <bobry> очень уж размашист твой камло код :) посему интересно, пацаны привыкли?
[21:53:56] <gds> bobry: сейчас один, раньше были мелкие фиксы от пацанов.  но в текущем коде в src/*.ml у меня размашисто то, где я ещё не дописал.
с другой стороны, у тебя чо, экран маленький?
[21:54:43] <bobry> 14''
[21:55:01] <bobry> в смысле размашистость это хорошо, но тут он прямо некомфортно размашист :)
[21:57:12] Andrey Popp вошёл(а) в комнату
[21:58:15] f[x] вышел(а) из комнаты
[21:58:21] <Kakadu> bobry: и у меня 14 дюймов
[21:58:38] f[x] вошёл(а) в комнату
[21:58:49] <Kakadu> bobry: а сколько у тебя строчек по-вертикали?
[21:59:08] <Kakadu> у меня 28 влезает
[21:59:19] <bobry> 30
[22:00:29] <gds> э, посоны, вы чо, своё зрение вообще не бережёте?  мне уже 29 лет и я уже смотрю за такими вещами тщательно.  давайте как-нибудь исправляйтесь, чтобы мой пример не повторяли.  а то уже пару лет как неидеальное зрение (не 100%), про всякие диоптрии вообще ссыкотно диагностироваться (но, вроде, пока не нужно).
[22:00:46] <bobry> gds: у меня крупный шрифт :)
[22:00:52] <Kakadu> у меня -4 давно уже
[22:01:03] <Typhon> bobry, один имакс буфер только влезает?
[22:01:03] <bobry> Kakadu: а зачем тебе в parse ref? можно же фолдом?
[22:01:15] <bobry> Typhon: ага
[22:01:18] <Typhon> мне там тоже реф не приглянулся %)
[22:01:28] <gds> bobry: фолдом будет не ок при изменении версии конфига, не?
[22:01:30] <Typhon> bobry, я обычно стараюсь, чтобы два буфера по 80 влезало
[22:01:57] <Kakadu> вначале не было read_all_lines и сканфил там же. Поэтому цикл остался
[22:02:54] <gds> про конфиг -- имхо надо отловить версию, если не найдена -- подразумевать текущую (разную для разных версий варвары), и остаток уже парсить на основании версии.
[22:03:29] <Kakadu> ладно, я попробую отключить чатик и хоть-чуть чуть поучиться. всем пока
[22:03:32] Kakadu вышел(а) из комнаты
[22:03:45] <bobry> gds: ну дропаем все до версии, а потом читаем фолдом
[22:05:22] <gds> bobry: ок, вариант, но не очень общо.  в общем, давайте не придираться к коду, наша цель -- чтобы код работал и надёжно.  в мелочах -- хоть обмазывайтесь рефами и этосамое, лично мне пофиг.  (сам так делаю!)
[22:05:59] <gds> не придираться -- в смысле, если код работает и, вероятно, будет работать дальше.
[22:06:29] <gds> потому что этот код ещё порядка N раз будет переписан.
[22:06:54] <bobry> true
[22:07:00] <gds> и вот, при переписывании неважно, ref там или fold, там важно, чтобы логику и типы соблюдали.
[22:08:16] <gds> собственно, в этом сила окамла, в возможности хоть чорта лысого гонять в алгоритме, но чтобы работало.
[22:08:19] <bobry> gds: я поковыряю пока http source type? чтобы было на чем install тестить?
[22:08:59] <bobry> да-да, и в этом фейл х-ля, (Functor f) ==> ShitpileT IO String ..
[22:09:00] <gds> bobry: очень хорошая идея!  пока давай, может, curl/wget использовать?
[22:09:07] <bobry> конечно-конечно
[22:09:31] <bobry> кстати как оказалось есть камло биндинги к курлу
[22:09:43] <bobry> но интерфейс у них полное уг
[22:10:14] <gds> есть, но, всё равно, либо просим юзера ставить курлы-курлы, либо их либу и биндинги -- один хрен.
[22:10:40] <gds> тупой хттп-клиент сделаю, потому что мне это и для работы будет нужно (именно тупой, да).
[22:13:01] <Typhon> главное, чтобы умел неподписанные сертификаты читать ^_^
[22:13:08] <Typhon> а то с окамльфордж не получится работать
[22:13:40] <bobry> гг
[22:14:11] f[x] вышел(а) из комнаты: Replaced by new connection
[22:14:12] f[x] вошёл(а) в комнату
[22:16:15] <gds> э не, я про http подписывался, именно он мне нужен для других целей, а не https.  в общем, смотрите сами.  курлота очень даже ок в зависимостях.
[22:21:37] <gds> э.  по-моему, нужен код, который как раз будет смотреть, makefile там или нет.  не?
[22:22:48] <bobry> gds: это guess_install_type
[22:22:59] <bobry> плюс у каждого "type" функция для проверки
[22:25:37] <gds> не знаю, зачем это делать, ну да пофиг.
[22:26:03] <bobry> gds: а что ты предлагаешь?
[22:26:41] <gds> вроде бы говорили, что всё инсталлится через тупую процедуру configure+make+makeinstall
[22:27:03] <bobry> omake?
[22:27:05] <gds> ну да пофиг, пока будет только один let makefile = ...
[22:27:20] <bobry> ок
[22:51:17] <gds> сверхгениальнейший Install.makefile есть.
[22:53:03] <gds> кто что делает дальше?
[23:03:00] <gds> bobry: куку
[23:03:04] <gds> Typhon: куку
[23:04:04] bobry еще на час застрял в rl .. как только вернусь, допишу http_archive
[23:21:48] f[x] вышел(а) из комнаты
[23:22:16] f[x] вошёл(а) в комнату
[23:34:42] f[x] вышел(а) из комнаты: Replaced by new connection
[23:34:43] f[x] вошёл(а) в комнату
[23:51:18] digitizer вошёл(а) в комнату
[23:52:16] digitizer вышел(а) из комнаты: QIP Infium: Спокойное общение
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!