Home
Objective Caml
ocaml@conference.jabber.ru
Суббота, 17 декабря 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:39] <ermine> клево, если бы мне платили за количество строк кода, давно бы купила ящик бейлиза
[00:01:42] ermine типа готова к такой работе
[00:08:00] ermine тычет в бок gds пустой бутылкой из-под бейлиза
[00:09:07] <gds> там не за строки будут платить, а за решённые задачи.  пичалька.
однако, где-то в середине января будет понятно, что и как будет.
[00:54:21] <ermine> ура, паттерны работаютЪ
[01:03:42] Kakadu вышел(а) из комнаты
[01:08:00] Andrey Popp вошёл(а) в комнату
[01:08:03] Andrey Popp вышел(а) из комнаты
[01:13:37] <ermine> эх, пора цпать
[01:13:42] ermine вышел(а) из комнаты
[01:18:27] komar вышел(а) из комнаты: Replaced by new connection
[01:18:28] komar вошёл(а) в комнату
[01:20:24] <bobry> gds: вроде ок
[01:20:32] <bobry> хотя я бы тогда ensure выпилил целиком
[01:20:35] <bobry> для единообразия
[01:24:22] f[x] вышел(а) из комнаты
[01:26:23] f[x] вошёл(а) в комнату
[01:27:58] Typhon вошёл(а) в комнату
[01:33:18] Typhon вышел(а) из комнаты
[01:37:42] Typhon вошёл(а) в комнату
[01:38:11] <bobry> ‏‎hcarty <https://irccloud.com/#!/irc.freenode.net:6667/hcarty>> thelema++ for the mailing list post on easing dependency management and related actual efforts toward that goal...
[01:38:13] <bobry> о чем это он?
[01:38:48] <bobry> я думаю, может стоит таки че нить чиркнуть о барбаре, шобы привлечь народ?
[01:45:32] <bobry> gds: и еще, почему для syscaps есть mli? ни для кого больше нету :)
[01:58:06] Typhon вышел(а) из комнаты: Replaced by new connection
[01:58:06] Typhon вошёл(а) в комнату
[01:58:34] <Typhon> bobry, глянь одб вики, телема там что-то активно в последнее время пишет. Да и комитит, может найдётся что
[02:00:00] <bobry> да он просто апдейтит список пакетов в oasis-db
[02:02:37] Typhon вышел(а) из комнаты
[02:04:25] Typhon вошёл(а) в комнату
[02:41:33] Typhon вышел(а) из комнаты: Replaced by new connection
[02:41:33] Typhon вошёл(а) в комнату
[02:52:40] Typhon вышел(а) из комнаты: Replaced by new connection
[02:52:43] Typhon вошёл(а) в комнату
[03:02:17] <gds> bobry: ensure выпиливать == ломать код для дрочева на красоту.  нафиг надо.  приучайся, что в больших проектах выгоднее делать постепенный, мягкий и нежный рефакторинг.
[03:06:34] <gds> кстати вот, несколько часов назад (сколько меня не было у компа) думал про "барбра для иноземцевъ".  могут помочь с кодом (минусы -- в том, что мы и сами порой с кодом друг друга не очень дружим), и с распространением идей (которых пока мало, так как сами не напилили на нормальную _концепцию_ всяких venv, различных dest_dir, совместного использования разных библиотек из разных источников).  то есть, хрен знает, стоит ли.  либо надо будет кому-то что-то доказывать про концепции, либо вникать в их предложения на паломатом английском.  думайте сами.
[03:12:45] <gds> если немного чётче выразить, то: 1. новых идей навряд ли подкинут, 2. за старые идеи придётся твердолобо сражаться, доказывая их пользу, 3. с кодом -- тут не rocket science, чтобы просить помощи, 4. показывать для багрепортов/фичереквестов -- рано, потому что пока только 1.0, тупая и беспощадная (и невыпущенная).  по-моему, без нормального подсоса зависимостей, инсталла, venv'ов, есть мало смысла жостко пеариться.  но смотрите сами.  я один, что ли, это клепал.  все отвечайте по своим заслугам!
[03:22:08] ftrvxmtrx вышел(а) из комнаты
[03:25:44] <gds> у меня есть план (только я давно его не курю), что нужно отлизать 1.0.  Если там будут типа-внешние зависимости -- либо бутсраттинг сделать, как я предлагал, либо тупо внешний скрипт, ставящий сначала зависимости, а потом и компиляющий brb, как f[x] предлагал.  Пофиг, "сила ночи, сила дня, одинакова этосамоя".
Далее отбранчить 1.1 и допилить то, что допиливается в пределах 1.1 -- догадки о расширениях по урлу / по локальному пути, например.  (кстати, есть ещё дела из Той Ночи, которые я не огласил тут, но успеется).
Далее -- подумать про подсос внешних зависимостей (в том числе через различные "индексы внешних пакетов"), про "доверие", про виртуальные окружения и различные пути установки пакетов из текущего проекта.
Далее -- поиграться с этим и добиться более-менее понятной линии развития.
И вот тогда было бы хорошо кому-то показывать.  Но это -- моё мнение.  Сами понимаете, камлоёбы все такие, что "надо сначала сделать, потом показывать".  Но почему лично мне не хочется показывать -- см. на пару сообщений выше (доказывать кому-то что-то, писать планы на на глийском, роадмапы, тьфуты).
[03:31:10] <gds> и ещё, субъективное.  то, что мне нравится версия1 из практичных побуждений (она реально работает!), не означает, что нужно на ней останавливаться.  просто, как минимум, не ломать её работоспособность.  например, реально, бранч 1.0 и разрабатывать как надо -- если бага, то присунуть в 1.0 и смержить/перепилить, если фича -- в следующие версии, как-то так.
[03:34:44] <gds> и ещё, полу-субъективное.  Почему я за Res.  Потому что там исключения надо ловить только в малом количестве мест.  В остальных случаях ловля весьма таки явная, и её очень просто сделать явной -- тот же матчинг `Ok|`Error.  Вероятно, для проекта с такой простой логикой это оверкилл, но смотрите сами.  Тут хотя бы тип ошибок ясен из паттерн-матчинга.  Например, в "взять системную возможность (wget/curl/..)" тип ошибки -- unit.  Не надо долго думать над ним; если unit -- ясно, что "конкретно это -- не получилось".
[03:35:30] <f[x]> ночью спать надо, а не манифесты сочинять!
[03:36:43] <gds> скоро-скоро.  сам-то чо? :]
[03:37:27] <gds> мы ещё с тем сраным байткодом не разобрались, хехе
[03:40:12] f[x] тренирует pentatonic scale, чо
[03:43:50] <gds> рокешник и митолл решил бацать, вот же ж!  и не стыдно!
а мне в последнее время интересны другие, кроме пентатоники и классических семиступеневых.  но пассивно как-то, даже почитать лень.  всякие индийские должны быть, ну и дальше на восток.
[03:46:44] <gds> а ещё шестиструнка нелогична, но, к сожалению, исторически сложилась, и требует лишнего мозга на этапе 3<->4 струны.  как этот ваш сраный original syntax.  повбывав бы.
[03:56:43] <f[x]> гг!
[03:56:54] <f[x]> две мандолины этому господину
[03:57:26] f[x] вышел(а) из комнаты
[04:00:36] komar вышел(а) из комнаты
[04:03:21] <gds> мне нужно много домбра!
[04:14:30] Typhon вышел(а) из комнаты: Replaced by new connection
[04:23:12] Typhon вошёл(а) в комнату
[04:29:06] letrec вошёл(а) в комнату
[04:29:13] letrec вышел(а) из комнаты
[04:29:29] letrec вошёл(а) в комнату
[04:33:11] <gds> запилил GET в барбру, ну и хватит.
[04:33:28] gds вышел(а) из комнаты
[06:06:25] letrec вышел(а) из комнаты
[06:22:31] ftrvxmtrx вошёл(а) в комнату
[06:59:38] Typhon вышел(а) из комнаты: Replaced by new connection
[06:59:39] Typhon вошёл(а) в комнату
[07:14:37] Typhon вышел(а) из комнаты
[07:16:36] Typhon вошёл(а) в комнату
[08:21:01] letrec вошёл(а) в комнату
[08:21:10] letrec вышел(а) из комнаты
[08:21:26] letrec вошёл(а) в комнату
[08:25:18] ftrvxmtrx вошёл(а) в комнату
[08:25:43] ftrvxmtrx вышел(а) из комнаты
[08:25:56] ftrvxmtrx вышел(а) из комнаты
[08:26:48] Andrey Popp вышел(а) из комнаты
[08:31:27] ftrvxmtrx вошёл(а) в комнату
[08:35:22] Typhon вышел(а) из комнаты
[08:49:49] ftrvxmtrx вошёл(а) в комнату
[08:49:50] ftrvxmtrx вышел(а) из комнаты
[10:12:57] letrec вышел(а) из комнаты
[10:19:59] letrec вошёл(а) в комнату
[10:30:14] letrec вышел(а) из комнаты: Replaced by new connection
[10:30:48] letrec вошёл(а) в комнату
[10:38:57] letrec вышел(а) из комнаты
[10:42:39] letrec вошёл(а) в комнату
[10:53:17] ermine вошёл(а) в комнату
[11:30:30] letrec вышел(а) из комнаты
[11:31:05] letrec вошёл(а) в комнату
[11:44:32] letrec вышел(а) из комнаты
[11:48:34] letrec вошёл(а) в комнату
[12:50:47] komar вошёл(а) в комнату
[12:52:02] Kakadu вошёл(а) в комнату
[12:55:05] <Kakadu> что-то утро не задалось
[12:56:25] <Kakadu> пришлось выслушать лекцию на тему "нахрена, тебе сынулся работать на нищую Украину, всёравно связей ты не приобретешь. И нахрена ты влез в этот долбаный окамл, который никому нахрен не нужен, иди программируй на чемнить нормальном, а то что ты говоришь что там всё через жопу делается, это наверное ты не разобрался."
[12:57:54] <komar> Чи срач развести по этому поводу.
[13:01:38] f[x] вошёл(а) в комнату
[13:17:32] <ermine> добное утро
[13:18:13] ermine с утра зажевала допинг "сникерс" и зафиксила еще одну багу в парсилке, всё идет суперотлично
[13:22:43] <f[x]> не используйте, дети, glibc'шный malloc
[13:23:40] <ermine> а чиво так?
[13:25:01] <f[x]> хврагментация
[13:25:52] <f[x]> ну либо пишите код без кучи маленьких маллоков
[13:25:56] <ermine> да наверное ты используешь разные маллоки в одном коде
[13:26:13] <f[x]> этот как?
[13:26:28] <ermine> у каждого маллока своя раковина-пул
[13:27:09] <ermine> у каждого - в смысле у каждого производителя маллока
[13:28:22] <f[x]> а как можно использовать разные в одной программе?
[13:28:25] <f[x]> и зачем?
[13:31:36] <komar> Что такое маллоки?
[13:32:02] komar улыбнулся дауновской улыбкой.
[13:35:35] <ermine> это такой опенсорц
[13:35:57] ermine в ожидании, когда GNOME на десктопе начнет херасегментиться пачками
[13:37:42] <ermine> f[x]: может инклюды, malloc.h какой-нить лишний или как-то там
[13:42:03] Kakadu вышел(а) из комнаты
[13:51:26] <f[x]> лишний маллок да - дефолтный
[13:53:10] <ermine> развели них-маллоков
[13:59:51] Kakadu вошёл(а) в комнату
[14:25:07] Kakadu вышел(а) из комнаты
[14:38:04] gds вошёл(а) в комнату
[14:41:40] Kakadu вошёл(а) в комнату
[14:58:27] <ermine> судя по тому, что в парсилке возникла проблема из-за дизайна парсера, утро наконец закончилось
[15:02:38] <ermine> о, новые идеи есть!
[15:04:26] Typhon вошёл(а) в комнату
[15:39:44] ftrvxmtrx вышел(а) из комнаты
[15:42:05] Andrey Popp вошёл(а) в комнату
[15:44:30] Typhon вышел(а) из комнаты
[15:45:29] Typhon вошёл(а) в комнату
[15:48:58] <Kakadu> эти х-ты как гентушники. Сказали что ставить пакеты с дебиана это не тру, кабал тебе в руки
[15:51:49] <gds> да, что-то логичное в этом есть.  гентушники тоже не ставят пакеты с дебиана.
[15:52:59] <ermine> а гента разве чем-то отличается от дебиана?
[15:53:22] <gds> нет, это такая же винда.
[15:53:56] <gds> ... как и бсд.
[15:54:13] <Kakadu> а сейчас барбара смотрит в моё системно-установленное?
[15:54:15] <ermine> Kakadu: ставить надо все через odb, какой еще кабал?
[15:54:46] <gds> Kakadu: да, смотрит.  Если надо, чтобы только в локальное -- пропиши везде, где нужно, локальное.
[15:55:34] <Kakadu> я хочу чтобы он взял пакет и собрал его , думаю что системно такого пакета нет
[15:55:39] <Kakadu> думая*
[15:55:47] <gds> Kakadu: пропиши в brb.conf
[15:56:08] <Kakadu> gds: dep kaputt remote-tar-gz http://forge.ocamlcore.org/frs/download.php/582/kaputt-1.1.tar.gz
[15:56:10] <Kakadu> ?
[15:56:19] <gds> да.
[15:56:31] <gds> и это спрашивает один из разработчиков барбры :)
[15:56:36] <Kakadu> ну тогда у меня ничего не собирается
Error: Unbound module Kaputt
[15:57:07] <gds> Kakadu: 1. обновись до самой новой барбры из ветки master, 2. покажи полные логи.
[15:58:43] <gds> точнее, не просто покажи, а попробуй по ним сам понять.  Обычно там не сложно.  Если капутт поставился, можешь сделать
$ (source _dep/env.sh && ocaml)
и там
#use "topfind";;
#require "kaputt";;
и посмотреть, что как.
[15:58:56] <ermine> капут
[15:59:04] <Kakadu> http://paste.in.ua/3491/raw/
[15:59:15] <Kakadu> ща
[16:01:13] <Kakadu> ну  капутт зарегвайрился, но модуля Kaputt реально нет
[16:01:29] <gds> Kakadu: это точно ветка master или твои изменения в том числе?  вижу кое-какую мелкую лажу, и думаю, она на гитхабе или твоё творчество.
[16:02:02] <Kakadu> нет, я только конфиг менял
[16:02:18] <Kakadu> нада руками сделать
[16:02:21] <ermine> ну я щас проверю тоже
[16:03:05] <ermine> скомпилилось
[16:03:40] <gds> интересно, какого хрена капутт делает mkdir -p /usr/lib/ocaml/kaputt
[16:04:02] <ermine> а где капутт?
[16:04:03] <gds> мать его, изначально, какого хрена он делает if [ -x "/usr/bin/ocamlfind" ] ???  пипец
[16:04:24] <Kakadu> короче барбара в порядке
[16:04:40] <Kakadu> по-видимому
[16:05:41] <ermine> может я не то запустила?
[16:05:49] <Kakadu> кажется Завье Клерк скоро получит по мордам
[16:05:57] <Kakadu> ermine: ты конфиг фиксила?
[16:06:51] <ermine> Kakadu: ничего я не трогала кроме git pull и gmake
[16:07:08] <Kakadu> dep kaputt remote-tar-gz http://forge.ocamlcore.org/frs/download.php/582/kaputt-1.1.tar.gz
[16:07:17] <Kakadu> ermine: в начале конфига добавь
[16:07:52] <gds> не, сходу не могу понять, почему модуль Kaputt не найден.  Однако, установился пакет нормально, поэтому вопросы не к барбре.
[16:08:15] <gds> и установился, и протестился в binary
[16:09:31] <Kakadu> я позапускал камлобраузер, (ocamlfind browser -package kaputt,kaputt.base,kaputt.num,kaputt.bigarray), модуль kaputt реально нет
[16:09:54] <ermine> Kakadu: что-что добавить? или вообще весь файл заместить?
[16:10:21] <ermine> ааа деп
[16:11:39] <ermine> Kakadu: а после добавления на какую кнопку нажать?
[16:12:02] <Kakadu> ./brb.byte build
[16:13:11] <ermine> плохо добавила, сканф ломается
[16:13:33] <ermine> собирается
[16:14:18] <ermine> та же ваша ботяга, нет модуля капута
[16:16:08] <ermine> Running command "make", это наверное такая шутка :)
[16:17:25] <ermine> D: Running command's argv: ["make"]
[16:17:33] <ermine> добавьте багу в тикет
[16:17:37] komar вышел(а) из комнаты: Replaced by new connection
[16:17:42] komar вошёл(а) в комнату
[16:19:44] <gds> вот поэтому я и думал, что brb надо запускать из мейкфайла, там бы взялось $MAKE.  только забыл об этом.
[16:19:54] <gds> ermine: MAKE=gmake ./brb.byte build попробуй
[16:20:08] <ermine> всё же gmake/make/nmake должен запускать человек, а не робот, иначе и никак не узнать, как называется правильная команда
[16:20:49] <gds> вот именно.  Если внутри барбры пускаешь, gmake run сделай.
[16:21:36] <gds> Kakadu: вопрос на засыпку.  Почему капут не ставит kaputt.cmi?
[16:21:42] <ermine> да, с MAKE команда заменилась
[16:23:03] <gds> ну дык, а про чтение $MAKE я не забыл.  знал же!
[16:24:01] <ermine> костыль же кривоногая
[16:25:14] <ermine> gmake run не замещает
[16:27:47] <Kakadu> надо Makefile капута пофиксить было
[16:27:49] <gds> ermine: сделай в Makefile цель
mytest:
    set | grep MAKE
и посмотри, что там стоит.
[16:28:04] <gds> (через gmake mytest)
[16:31:21] <Kakadu> gds: http://paste.in.ua/3492/raw/
[16:31:23] <ermine> gds: чочо? это у мейкфейла своя собственная $MAKE
[16:32:11] <gds> bobry: меня волнует, откуда взялась строка wget -q http://paste.in.ua/3491/raw/ -O - | grep '^/usr/bin/wget'  -- но сходу не нашёл.  если не лень, поищи тоже, вдруг найдёшь.
[16:32:26] <gds> ermine: и что, оно не протаскивает MAKE в окружение?
[16:32:58] <gds> Kakadu: да, только после \ должен идти \n, чтобы это проканало.
[16:33:24] <Kakadu> ну я в вебе дописал коммент
[16:33:49] <gds> Kakadu: в общем, клонируй этот капут куда-нибудь себе в локальную диру, фиксь мейкфайл, далее "dep kaputt local-dir ../kaputt-fixed"
[16:34:31] Typhon вышел(а) из комнаты
[16:35:43] <ermine> не видно его прямых вызовов
[16:38:58] <gds> ну значит везде, где вызывается brb из мейкфайлов, надо ставить MAKE=$(MAKE) ./brb.byte build или подобное.
[16:43:26] f[x] вышел(а) из комнаты
[16:45:55] <Kakadu> gds: починилось
[16:46:11] <gds> миr снова спасён!
[16:47:04] <Kakadu> супербобрый такое уже зарепортил
[16:49:00] Typhon вошёл(а) в комнату
[16:50:53] <Andrey Popp> как заставить  oasis пакет поставиться не в /usr/local/lib/ocaml/site-lib? —destdir, —prefix при -configure не помогает
[16:51:49] <Kakadu> бобрый даже патч присунул, но его пока не смотрели
[16:52:46] <gds> Andrey Popp: я в оверблд использовал такое, работает:
(
prefix="$INST_PREFIX"
export prefix
ocaml setup.ml -configure && \
ocaml setup.ml -build && \
ocaml setup.ml -install
)
[16:53:55] <Andrey Popp> gds: что-то мне это не помогает :\
[16:56:01] <gds> Andrey Popp: показывай полностью, как делаешь.
[16:56:11] shaggie вошёл(а) в комнату
[17:01:29] shaggie вышел(а) из комнаты
[17:12:01] <Kakadu> gds: а как расшифровывается Bundled Temporary ?
[17:17:18] <gds> лежащее в локальных директориях проекта, но по сути временное -- результат скачивания / клонирования / распаковки.
[17:17:48] <Kakadu> _dep/tmp?
[17:18:01] <gds> обычно где-то там.
[17:38:25] <gds> Typhon: давай идейку для игрушечного проекта для туториала по итератам.  У меня только yaml на уме -- но понятно, потому что мне он нужен на практике, но он сложноват.
[17:39:15] <Kakadu> gds: итераты это наворот для чтения из файлов?
[17:39:34] <gds> о, прямо сейчас и начну писать начало, видимо.
[17:45:03] <Kakadu> gds: а в итератах ты не собираешь tests_common.ml намеренно или случайно ?
[17:59:37] <gds> итераты -- это способ разбора входящих потоков с элементами любых типов, позволяющий как прямую работу с массивами, содержащими поступающие на вход элементы (массив -- так называемый "чанк"), так и хорошо-композиционируемые комбинаторы, позволяющие на чанки смотреть только по необходимости (например, при желании соптимизировать код).
преимущества итератов:
- они позволяют гарантировать много фактов, касающихся ресурсопотребления (постоянная память самой "машинерии" итератов, своевременное освобождение взятых ресурсов),
- позволяют писать вполне декларативный код, если есть желание выразить задачу в высокоуровневых терминах, и вполне низкоуровневый код, работающий с чанками напрямую (который, например, можно вынести даже в C),
- могут работать как без монад (точнее, с тривиальной базовой монадой Identity), так и с любыми монадами (например, успешно работают с lwt),
- не являются "исключительно парсерами" -- позволяют выполнять любой требуемый код рядом с кодом, специфичным собственно для итератов -- например, позволяют ввод-вывод через базовую монаду.  В случае, когда базовая монада это lwt или что-то параллельное, они органично вклеиваются, позволяя параллельную обработку нескольких потоков данных через lwt
типично используются следующие сущности:
- итераты (тип iteratee), задача которых -- по входному чанку вернуть результат работы и остаток неиспользованного чанка, либо вернуть результат, интерпретируемый как "подайте мне ещё данных, чтобы я смог выдать результат", либо вернуть ошибку.
- энумераторы (тип enumerator), задача которых -- кормить итераты входящими данными из произвольных источников, например, из файлов, сокетов.  Они создают чанк, заполняют его данными и передают итерату.  Кроме того, в их задачи входит контроль ресурсов -- например, энумератор, вызываемый с именем файла, содержимое которого он будет давать итерату, закрывает этот файл по окончании работы (при этом, не требует прочтения всего файла, если это не требуется итерату, и читает файл чанками нужного размера, экономя на вводе-выводе).
- энумераты (тип enumeratee), представляющие собой снаружи те же самые итераты -- принимают данные, которые внутри преобразовывают в чанки и скармливают их вложенному итерату, таким образом, являясь прослойкой между реальным входящим потоком одних данных, и потоком, требуемым вложенному итерату.  (как простой пример -- если вложенный итерат читает utf8-символы, а нужно читать поток байтов, содержащих байтовое представление этих символов, то энумерат, требующийся для решения задачи, должен быть итератом, принимающим байты, и энумератором кормящим вложенный итерат чанками из utf8-символов)
[17:59:57] <gds> Kakadu: не помню про tests_common точно.  по идее, если это тесты, они идут в make test[s]
[18:01:22] <Kakadu> gds: а, я понял. да, так и должно быть
[18:08:21] <gds> Kakadu: а с итератами -- асилил?
[18:09:42] <Kakadu> gds: текст норм, если ты про это
[18:48:14] <bobry> Kakadu: у капутта сломан Makefile
[18:48:23] <bobry> он не инсталит cmx по моему
[18:49:34] <bobry> gds: про /usr/bin/wget -- сходу не скажу
[18:49:45] <gds> а я и не только сходу не скажу.
[18:50:02] <bobry> очевидно где то debug :D
[18:50:08] <bobry> ааа!
[18:50:15] <bobry> это which буянит
[18:50:19] <bobry> не редиректнул вывод чтоли
[18:52:30] <gds> кстати, тот Sys.command в exec заворачивать не надо, там надо чётко проверять код на 0 / 1, а в exec этого нет.  можно отгенерить из exec функцию, которая будет возвращать (int, exn) res с кодом, а в старом exec проверять той же логикой, равен ли код 0.
[19:00:15] <Typhon> gds: yaml, bson -- вроде полезно, а бсон не сложно даже :-)
[19:06:18] <gds> я посмотрел на yaml, страшно стало.  в топку его.  какие-то биндинги есть, вот и ок.
[19:06:32] <gds> тьфуты, конечно же бсон хотел делать!
[19:09:29] <gds> Typhon: http://ubjson.org/ видел?
[19:24:05] Typhon вышел(а) из комнаты: Replaced by new connection
[19:24:06] <bobry> gds: может лучше http? или ты парсеры с итератами хочешь?
[19:24:08] Typhon вошёл(а) в комнату
[19:37:27] <gds> bobry: http уже есть.
[19:45:24] <ermine> gds: yaml изобретали чуваки, хорошо знающие sml, они не могли ошибиться
[19:45:35] <ermine> и грамматика чоткая
[19:46:06] <ermine> а json кстати - это подмножество yml
[19:47:23] ermine впала в развивающийся тупняк в парсинге и впадает в ступор по этому поводу
[20:00:13] <gds> ermine: yaml говно, судя по спеке, только тем, что слишком сложный.  сложная грамматика не нужна.
[20:01:09] <gds> вообще, в последнее время считаю, что сложная грамматика нигде не нужна.  если не парсится LL(1) -- в топку, за редкими исключениями.
[20:11:47] komar негодует.
[20:31:17] ftrvxmtrx вошёл(а) в комнату
[20:39:43] <Kakadu> а можно оазису сказать, что после ocamlyacc bla.mly запустить что-нибудь?
[20:40:48] <gds> во блин, психологический блок.  как поверх кадастра всякую непотребщину лепить -- так нормально, как поверх чистых структур -- так думаю чото там, леплю горбатого.
[20:45:48] <ermine> gds: если тебе нужен плоский конфиг (без списков и вариантов(, то понятно почему так думаешь
[20:46:06] <ermine> даже ini конфиг вызывает кучу вопросов, куда девать то, что надо
[20:46:19] <ermine> потому что у ini всего два уровня
[20:46:21] <gds> ermine: json!1111
[20:46:44] <ermine> gds: ну это часть yaml
[20:46:59] <ermine> упрощенный yaml
[20:46:59] <gds> это две разные вещи.
[20:47:06] <ermine> и можно еще дальше упрощать
[20:47:43] <ermine> gds: синтаксис json позволяет его описывать как yaml
[20:48:22] <gds> громатека yaml не позволяет его парсить легко и тупо, как json.
[20:49:20] ermine поела пирогов и поняла, что если ломать привычные представления об грамматике и совершать переход от cfg к peg, то также надо ломать привычные представления о том, что текст для описания парсилки надо делать похожим как у yacc
[20:49:49] <ermine> так что наступает новая фаза парсеротворчества
[20:50:44] <gds> ну да, сделаешь очередной ocamlyacc / menhir / dypgen.  Моим потребностям не отвечает.  А именно, лично мне нужно описывать грамматику без препроцессоров, которые чото ломаются.
[20:52:21] <ermine> дадад, только кто из них умеет CS?
[20:52:38] <gds> computer science?  никто.
[20:53:01] <gds> counter-strike тоже.  и x86 command segment.  бида.
[20:53:05] <ermine> не, контекстнозависимая грамматика
[20:53:37] <gds> итераты, чо.
[20:54:15] <ermine> а как там с бэктрэком?
[20:54:27] <ermine> и бесконечный лукахед
[20:54:48] <gds> это уже совершенно другие вопросы.
[20:55:07] <ermine> плюс в PEG есть предикаты, которые тестируют инпут, но не поглощают его
[20:55:25] <ermine> они обеспечивают lookahead(*)
[21:02:41] letrec вышел(а) из комнаты
[21:47:58] komar вышел(а) из комнаты
[21:52:58] <Andrey Popp> gds: как-то так https://gist.github.com/c89d011f0998cdf5e400
[21:55:16] <gds> Andrey Popp: это хорошо, но покажи вывод ocaml setup -configure, вдруг там будет что-нибудь интересное.
[21:56:19] <Andrey Popp> gds: https://gist.github.com/14e5ef290113cf170ec3
[21:56:41] <Andrey Popp> там то всё указывает туда куда надо...
[21:59:15] <gds> да, именно это и хотелось увидеть.  Значит кто-то неправильно устанавливает.  То есть, отвечает за это только ocaml setup.ml -install, его и будем ковырять.  Покажи его вывод, может будет понятно, почему он криво ставит.
[22:02:11] <Andrey Popp> gds: действительно — в  ocamlfind install не прокидывается destdir
[22:02:28] <Andrey Popp> : Running command '/usr/local/bin/ocamlfind install type-conv lib/META /private/tmp/homebrew-type-conv-3.0.3-Cgsi/type-conv-3.0.3/_build/lib/Pa_type_conv.cmi /private/tmp/homebrew-type-conv-3.0.3-Cgsi/type-conv-3.0.3/_build/lib/pa_type_conv.cma lib/Pa_type_conv.mli'
[22:08:00] <gds> а он может и не прокидываться явно -- в теории, оно должно ставить в $OCAMLFIND_DESTDIR.
ага, я понял.  у меня оно ставит правильно потому, что сам ocamlfind лежит где надо и знает, куда ставить.
как же помочь -- сходу не знаю.  можно выставить переменные окружения так, как в барбре делаем -- http://paste.in.ua/3497/ -- но не уверен, что поможет, учитывая то, что надо будет указывать OCAMLPATH даже при использовании.
подобную проблему будем решать в пределах той же барбры, но пока она не решена.  Если будет желание помочь -- лично я буду рад.
[22:09:21] <Andrey Popp> хм… вообще я ставлю в  Cellar, но потом symlink делаю куда надо
[22:10:54] <gds> может пока проще будет сразу куданадо, и это куданадо прописать так, чтобы его ocamlfind уважал?
[22:11:07] <gds> хотя не знаю обстоятельств, заставивших так делать, может не покатит.
[22:20:58] ermine вышел(а) из комнаты
[23:08:12] <Kakadu> забавно, когда на камле расширяем модуль, мы пишем include, а в фадиезе include писать не надо.
[23:08:22] <Kakadu> куда же это всё заведет?
[23:20:59] <Andrey Popp> вообщем надо для ocaml штуку типа python'ского virtualenv или haskell'ного cabal-dev
[23:21:44] <gds> Andrey Popp: вливайся.
[23:22:31] <Andrey Popp> gds: да я боюсь, что у меня опыта не хватит, буду только мешаться… там по ходу посмотрим что будет получаться
[23:23:40] <gds> Andrey Popp: начни со спеки, почитай, добавь каментов, а то и удали/допиши что-то.  Ведь про venv мы толком не продумали.  Урл гуглодока скину сейчас.
[23:24:05] <Kakadu> Andrey Popp: перескажи кабаловские идеи
[23:24:12] <Kakadu> питонские идеи
[23:24:18] <gds> не все из них хороши.
[23:24:30] dzhon вошёл(а) в комнату
[23:24:32] <Kakadu> но мы хотябы будем о них знать
[23:25:09] <Andrey Popp> идея одна — изолированные окружения, со своими версиями библиотек
[23:25:38] <Kakadu> давай рассказывай как это окружение смотрит на системно стояшие библиотеки
[23:25:45] dzhon вышел(а) из комнаты
[23:27:34] <Andrey Popp> есть два варианта: 1) stdlib виден 2) в зависимости от ключика переданного при инициализации venv можно управлять видимостью системных либ
[23:28:57] <gds> да, интересно, особенно в случаях 1. стоит "дефолтное камло" (которое в PATH например) и системные библиотеки, надо дособрать всё оставшееся для проекта, 2. надо собрать какие-то библиотеки и положить их в определённую директорию/префикс для дальнейшего использования группой проектов (а то и одним проектом при разных его компиляциях).
[23:30:15] <Andrey Popp> ещё интересно в scala+sbt — там для каждого отдельного проекта бутстрапится отдельно компилятор + stdlib + 3rd party libs
[23:30:38] <gds> конкретно это -- страшно.
[23:31:22] <Andrey Popp> там кстати ещё интересный момет есть — из-за бинарной несовместимости даже между минорными релизами каждый пакет параметризован не только версией пакета, но и версией компилятора…
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!