Home
Objective Caml
ocaml@conference.jabber.ru
Воскресенье, 11 марта 2012< ^ >
f[x] установил(а) тему: 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:35] bobry вышел(а) из комнаты
[00:18:41] <Kakadu> https://github.com/camlunity/purse/commit/d60fd7f5493b65ddaab7063fb0f79373cae4bb49
[00:18:50] <Kakadu> на очереди https://github.com/thelema/odb/blob/master/fail_packages
[00:38:54] <Kakadu> может мы как-то сможем создавать рецепты для всего что есть на форже?
[00:58:52] dzhon вышел(а) из комнаты: Replaced by new connection
[00:58:52] dzhon вошёл(а) в комнату
[01:13:34] komar вышел(а) из комнаты
[01:13:59] komar вошёл(а) в комнату
[01:45:33] Kakadu вышел(а) из комнаты
[02:56:05] Typhon вышел(а) из комнаты
[03:02:15] shaggie вышел(а) из комнаты
[03:13:59] dzhon вышел(а) из комнаты
[09:02:14] bobry вошёл(а) в комнату
[09:25:57] <bobry> Kakadu, круто! а автоматом создавать рецепты для всего что на форже не получится, ибо там в метаданных нет зависимостей
[09:55:57] <bobry> у меня такое подозрение что барбара осилит большинство пакетов которые не могет odb
[09:56:01] <bobry> потому что у нас есть patch :)
[10:08:24] bobry вышел(а) из комнаты
[10:57:37] superbobry вошёл(а) в комнату
[11:06:31] <superbobry> товарищи? а на ocaml workshop никто не планирует ехать?
[11:11:52] Typhon вошёл(а) в комнату
[11:12:51] Mon вошёл(а) в комнату
[11:18:17] Typhon вышел(а) из комнаты
[11:23:15] ermine вошёл(а) в комнату
[11:30:40] Typhon вошёл(а) в комнату
[11:33:04] Typhon вышел(а) из комнаты: Replaced by new connection
[11:35:41] Typhon вошёл(а) в комнату
[11:36:32] Typhon вышел(а) из комнаты
[11:37:36] Typhon вошёл(а) в комнату
[11:43:48] Typhon вышел(а) из комнаты
[11:45:53] Typhon вошёл(а) в комнату
[12:01:57] <superbobry> Kakadu, думаешь надо brb list?
[12:06:40] Kakadu вошёл(а) в комнату
[12:07:52] <Kakadu> superbobry: brb list было бы круто
[12:08:02] Typhon вышел(а) из комнаты: Replaced by new connection
[12:08:05] <Kakadu> superbobry: тогда же brb show
[12:08:23] Typhon вошёл(а) в комнату
[12:10:42] <superbobry> и brb edit :)
[12:10:48] <superbobry> или
[12:12:02] <Kakadu> superbobry: с форжи можно скачивать пакеты и шерстить _oasis чтобы найти зависимости
[12:12:27] <superbobry> ну, это не сработает в общем случае, потому что в _oasis лежат зависимости ocamlfind
[12:12:33] <superbobry> например sexplib.syntax
[12:12:42] <superbobry> правда можно сказать что на интересует все до точки
[12:14:13] <Kakadu> ладно. хер с ним
[12:14:39] <superbobry> плюс не все пакеты на forge умеют OASIS
[12:14:46] <superbobry> настоящие пацаны же пишут мейкфалы
[12:14:53] <superbobry> *файлы
[12:22:07] <Kakadu> и ещё мне не нравится что если на форже появится новая версия, то мы об этом не узнаем и не поправим конфиг
[12:22:38] <superbobry> ну это ок по моему -- все так живут
[12:22:47] <superbobry> ну или можно запилить аналог дебиановского watch
[12:24:00] redbrick вошёл(а) в комнату
[12:30:48] <Kakadu> запили ещё конфигов
[12:31:02] <superbobry> рецептов?
[12:31:21] <superbobry> я пока в работе, мб ближе к вечеру
[12:35:32] <Kakadu> я букву л забыл
[12:35:41] <Kakadu> "запилил ещё конфигов")
[12:37:20] <Kakadu> нада найти тестеров
[12:37:26] <superbobry> это да
[12:38:12] <superbobry> Kakadu, а ты их проверял? sqlite3 например хочет свой toplevel ставить, ему патч нужен
[12:40:10] <Kakadu> нет. ты что, что бы я такое количество пакетов проверил
[12:40:15] letrec вошёл(а) в комнату
[12:40:24] <Kakadu> у меня даже кора перестала собираться
[12:40:34] <Kakadu> сейчас буду напрягать мозг что с ней
[12:40:52] <superbobry> надо бы запилить скрипт который бы обходил репозиторий и пробовал все собирать
[12:41:07] <superbobry> а на выходе давал директорию с ошибками для не собравшихся пакетов
[12:41:10] <superbobry> вот это было бы кошерно
[12:45:48] komar вышел(а) из комнаты: Replaced by new connection
[12:45:48] komar вошёл(а) в комнату
[12:57:28] <Kakadu> хм, а сейчас кора собралась
[12:57:37] <superbobry> магия какая т
[13:10:51] <ermine> проверить легко - стереть все рабочие копии, перезагрузить комп, распаковать тарболы и скомпилить заново :)
[13:18:24] redbrick вышел(а) из комнаты
[13:23:47] <Kakadu> ermine: у меня есть виртуалка
[13:28:52] klapaucius вошёл(а) в комнату
[13:33:00] <Kakadu> а вы знали что чтобы скомпилить барбру надо ставить fileutils?
[13:39:18] <Kakadu> а также pcre
[13:44:34] <Kakadu> а ещё oasis-dev
[13:48:37] <Kakadu> тревога отменяется. это не та барбра была походу
[13:54:01] <superbobry> лол
[14:20:04] komar вышел(а) из комнаты
[14:22:05] komar вошёл(а) в комнату
[14:23:20] komar вышел(а) из комнаты
[14:59:37] Typhon вышел(а) из комнаты
[15:01:01] Typhon вошёл(а) в комнату
[15:01:19] Typhon вышел(а) из комнаты
[15:02:38] Typhon вошёл(а) в комнату
[15:03:17] Typhon вышел(а) из комнаты
[15:06:39] Typhon вошёл(а) в комнату
[15:12:54] Kakadu вышел(а) из комнаты
[15:14:40] Kakadu вошёл(а) в комнату
[15:16:57] <Kakadu> kakadu.hafanana@gmail.comV53WDVfaJGJvqZP
[15:17:09] <Kakadu> ой
[15:17:45] <letrec> спалил мыло
[15:17:55] <Kakadu> и пароль
[15:18:21] <letrec> кто быстрее пароль к нему поменяет?
[15:18:36] <Kakadu> я не спалил пароль от чего это
[15:19:42] Mon вышел(а) из комнаты
[15:20:39] shaggie вошёл(а) в комнату
[15:25:11] <Kakadu> усё. пароль не поможет
[15:34:40] <superbobry> Kakadu, а давно js перевели все свое хозяйство на bitbucket?
[15:44:27] <Kakadu> осенью
[15:49:23] <superbobry> indexWord8Array# :: ByteArray# -> Int# -> Word#
indexWord8Array# = let x = x in x
[15:49:28] <superbobry> вот так в х-ле все и работает
[16:02:07] Mon вошёл(а) в комнату
[16:28:46] Typhon вышел(а) из комнаты
[16:29:53] Typhon вошёл(а) в комнату
[17:46:31] Typhon вышел(а) из комнаты
[17:47:37] Typhon вошёл(а) в комнату
[17:47:44] Typhon вышел(а) из комнаты
[17:48:37] Typhon вошёл(а) в комнату
[17:50:03] komar вошёл(а) в комнату
[17:59:56] Typhon вышел(а) из комнаты
[18:09:32] Typhon вошёл(а) в комнату
[18:09:40] Typhon вышел(а) из комнаты
[18:12:50] Typhon вошёл(а) в комнату
[18:29:37] <gds> посоны, я уже замудохался.  кто-то в coq шарит?  http://gds.livejournal.com/63527.html
[18:31:37] Typhon вышел(а) из комнаты
[18:34:08] komar вышел(а) из комнаты
[18:34:47] komar вошёл(а) в комнату
[18:49:45] ftrvxmtrx вышел(а) из комнаты
[18:52:59] komar вышел(а) из комнаты
[18:53:55] komar вошёл(а) в комнату
[18:56:22] ftrvxmtrx вошёл(а) в комнату
[19:13:51] tilarids вошёл(а) в комнату
[19:16:50] <tilarids> superbobry, про код на окамле
[19:17:11] <superbobry> ага
[19:17:20] <tilarids> это я пытался решить мартовскую айбиэмовскую задачку
[19:17:39] <superbobry> это какую? я что-то ни разу не видел задачек от IMB
[19:17:51] <tilarids> http://domino.research.ibm.com/Comm/wwwr_ponder.nsf/Challenges/March2012.html
[19:18:03] <tilarids> у них довольно прикольные задачки, раз в месяц
[19:18:23] sannysanҨff вошёл(а) в комнату
[19:18:49] <tilarids> так вот, на джаве и плюсах она решается простым перебором, когда половина дерева забивается жадным алгоритмом
[19:19:25] <tilarids> я решил выучить окамль и написал алгоритм на окамле
[19:19:29] <superbobry> ага
[19:19:43] <tilarids> http://codepad.org/qvuLbU1A - вот
[19:20:38] <tilarids> говнокод, конечно, но все же
[19:21:35] <superbobry> кстати по моему Set из коробки это обычное дерево, так что все операции там O(lgn)
[19:21:50] <superbobry> хотя в STL вроде бы так же
[19:21:59] <tilarids> еще можно убрать мемоизацию, на джаве и плюсах не было мемоизации и не факт, что она помогает
[19:22:20] <tilarids> superbobry, да. Профилировщик утверждает, что самая тяжелая операция - Set.S.mem
[19:22:44] <tilarids> ничего лишнего оно вроде не считает
[19:23:03] <tilarids> но при этом джавовые и плюсовые решения находят правильные варианты, а это - не находит, даже если надолго оставить
[19:24:03] <superbobry> гм, так оно мало того что тормозит, еще и не решает ничего?
[19:24:32] <tilarids> я просто не дожидаюсь решений для глубины 6
[19:24:39] <tilarids> для глубины 3,4,5 - решает
[19:24:54] <superbobry> я так понимаю что это 1-в-1 трансляция с плюсов-жавы?
[19:25:06] <tilarids> нет, не 1-в-1
[19:25:27] <tilarids> я могу восстановить Сшный код по этому варианту
[19:27:34] <tilarids> вопрос по этому коду - можно ли его сделать быстрее? Может, я делаю какое-то слишком глупое действие? Например, что-то вычисляется по 100 раз?
[19:27:42] <superbobry> так
[19:27:48] <superbobry> а ты как запускаешь это все?
[19:27:54] <superbobry> ocaml path/to/file.ml?
[19:28:10] <tilarids>     ocamlfind ocamlopt -package batteries -linkpkg ibm_march.ml -unsafe -inline 20 -o ibm_march
[19:28:22] <superbobry> гм?
[19:28:27] <tilarids> компилирую
[19:28:28] Typhon вошёл(а) в комнату
[19:28:48] <superbobry> в общем надо помедитировать чутка над этим кодом -- я так с ходу явного косяка не вижу
[19:29:02] <tilarids> как я понимаю, количество копирований в стеке рекурсии никак не уменьшить. В сишном коде также все копируется
[19:29:16] <tilarids> и там все быстренько работает
[19:29:42] Typhon вышел(а) из комнаты: Replaced by new connection
[19:30:02] Typhon вошёл(а) в комнату
[19:30:05] <superbobry> ты наверное в сишном коде не Set а какой нить bool * юзаешь да?
[19:30:08] <tilarids> superbobry, смотри только функцию solution - это она медленная, остальной код асимптотически шустрее
[19:30:22] <superbobry> ее и смотрю ага
[19:30:56] <superbobry> причем я так понимаю что основную часть времени выполняется loop, да?
[19:31:49] <superbobry> в общем первое что приходит в голову вместо IntSet.filter делать IntSet.iter
[19:32:07] <tilarids> superbobry, там аналог BitSet
[19:32:09] <superbobry> и в ней проверять твое условие """Int_set.mem (parent_dist x) dist_set') elem_set'"""
[19:32:24] <tilarids> но я пробовал на BitSet, оно почему-то еще медленней работало
[19:33:20] <tilarids> superbobry, разумно, хаскелевские ленивые списки ввели в заблуждение
[19:34:36] <superbobry> аналогично в build_arr
[19:34:56] <superbobry> ан нет, там тебе нужно в сортированном порядке -- сори
[19:36:28] <tilarids> superbobry, build_arr можно не смотреть, там сложность O(N)
[19:38:09] Typhon вышел(а) из комнаты: Replaced by new connection
[19:38:32] Typhon вошёл(а) в комнату
[19:38:52] <tilarids> не, грандиозного скачка производительности не дало. Непонятно, где тормозит
[19:39:40] <gds> интересно бы более полный профайлинг поглядеть, в том числе за мутабельные штуки, иногда они подсирают в компот.  то есть, native code + profiling + gprof или что-нибудь аналогичное gprof'у.  вероятно, тормоза из-за сишных функций и/или мусорщика, если "на глаз" алгоритм нормален.
жаль только, что сейчас убегаю, сегодня разве что под глубокий вечер смог бы посмотреть-подумать.  да и навряд ли от этого будет толк, я как бы туповат в последние дни.
[19:40:29] <superbobry> мусорщик мб, ибо Set то чистый, на каждый рекурсивный вызов лупа генерится туева пачка Setов
[19:40:53] <superbobry> хотя если .filter нет то только два
[19:41:35] <tilarids> результат работы gprof сейчас сброшу
[19:42:17] <tilarids> http://codepad.org/60HJUu7A
[19:42:18] <gds> там ещё мутабельность, я не анализировал её сходу, но может и она.  массивы какие-то были.
довольно забавно, что чистый код в некоторых случаях работает сильно быстрее, особенно на небольших алгоритмах.
[19:43:30] <superbobry> лоло
[19:43:33] <gds> tilarids: "caml_apply2" -- попробуй убрать некоторые частичные применения функций (те, которые (f arg1 .. argN), к которым применяются ещё аргументы потом).
[19:43:36] <superbobry> tilarids, ты юзаешь boxed ints же
[19:43:43] <superbobry> http://ocaml-batteries-team.github.com/batteries-included/hdoc/BatInt.html
[19:45:02] <gds> superbobry: почему это boxed?  мне неочевидно из ссылки.
[19:46:04] gds убежал
[19:46:15] <superbobry> вру-вру
[19:46:43] <superbobry> https://github.com/ocaml-batteries-team/batteries-included/blob/master/src/batInt.ml
[19:47:58] <superbobry> кстати наверное не стоит каждый раз объявлять try_fun
[19:48:23] <superbobry> учитывая что loop вызывается тучу раза
[19:49:35] <tilarids> superbobry, так он же использует elem_set' из loop
[19:49:51] <superbobry> так можно передавать его аргументом
[19:50:12] <tilarids> gds, я как бы нигде не делал частичное применение осознанно о_О
[19:51:01] <superbobry> ах черт, try_next использует loop
[19:51:12] <superbobry> ну так вообще не нужна там эта функция
[19:51:19] <superbobry> если ты на .iter переписал
[19:51:59] <tilarids> поменять ее на (fun x -> ) ?
[19:52:03] <tilarids> не вижу смысла
[19:52:53] <tilarids> вот где частичное применение там - в упор не вижу
[19:55:14] <superbobry> tilarids, я про вот это http://paste.in.ua/3983/
[19:56:42] <tilarids> лямбды быстрее именованной функции? У меня сейчас тоже одна
[19:57:01] <superbobry> тогда я смотрю на какую то другую версию твоего кода :)
[19:57:14] <superbobry> вот на эту http://codepad.org/qvuLbU1A
[19:57:37] <tilarids> superbobry, ну, ты же говорил переписать с фильтра на iter, код немного поменялся. Сейчас последнее покажу
[19:57:58] <superbobry> ага, просто если ты используешь iter то try_next уже не нужен
[19:58:01] <superbobry> надо думать что его уже и нет
[19:58:07] <tilarids> http://codepad.org/r3FsPnoF
[19:58:48] <superbobry> ага, вроде ок, хм
[20:00:27] <tilarids> ну, ускорил на 5% этим всем. Но это не то, что меня спасет. Я, конечно, уже сижу и алгоритм переписываю, чтобы не полный перебор, но перебор тоже должен работать
[20:02:12] <tilarids> можно второй раз на BitSet попробовать переписать
[20:02:32] <superbobry> по идее BitSet должен быть быстрее конечно
[20:02:52] <tilarids> у меня медленней было
[20:03:19] <tilarids> там и написано - A bitset is an array of boolean values that can be accessed with indexes like an array but provides a better memory usage (divided by 8) for a very small *speed trade-off*.
[20:03:57] <superbobry> гм, нафик его тогда :)
[20:06:09] Typhon вышел(а) из комнаты
[20:09:42] komar вышел(а) из комнаты
[20:13:22] superbobry вышел(а) из комнаты
[20:14:23] komar вошёл(а) в комнату
[20:15:54] komar вышел(а) из комнаты
[20:16:03] komar вошёл(а) в комнату
[20:25:42] vshender вошёл(а) в комнату
[20:50:53] komar вышел(а) из комнаты
[20:51:22] <tilarids> если делать через битовые массивы (bool array) с принудительным копированием - начинает сильно тормозить
[20:53:54] komar вошёл(а) в комнату
[20:56:01] bobry вошёл(а) в комнату
[21:10:12] <bobry> Kakadu: лоло
$ cat ~/.brb/recipes/batteries
Dep batteries get "git://github.com/ocaml-batteries-team/batteries-included.git"
[21:10:14] letrec вышел(а) из комнаты
[21:13:22] <Kakadu> bobry: fixed
[21:13:29] <bobry> не торопись
[21:13:31] <bobry> я его щас проверяю
[21:13:35] <bobry> на стабильной версии
[21:13:39] <bobry> с forge
[21:26:04] <Kakadu> ну что?
[21:32:48] <bobry> camomile надо
[21:32:51] <bobry> почти запилил
[21:33:13] <bobry> кстати как давно в камлолисте был последний срачик про поддержку уникода из коробки?
[21:36:36] <bobry> Kakadu: done
[21:36:45] <bobry> я перезаписал твой коммит :)
[21:37:17] <bobry> Кстати если есть время и желание https://github.com/camlunity/barbra/issues/21
[21:51:47] Kakadu вышел(а) из комнаты
[21:53:31] Kakadu вошёл(а) в комнату
[22:11:01] ermine поскрипела ржавым мозгом и добавила в парсилку опцию --verbose, которая втыкается через _tags
[22:12:29] <ermine> камлобилд - ништяк, если уметь его готовить
[22:14:07] Mon вышел(а) из комнаты
[22:15:32] <ermine> а еще кстати возникло соображение, что type result = Parsed | Failed - это источник бедствий в парсере
[22:19:51] <ermine> и болезней рассудка
[22:20:59] <Kakadu> bobry: а что сейчас конкретно в 32 issue надо сделать?
[22:21:51] <bobry> Kakadu: 32?
[22:23:48] <Kakadu> 21 )
[22:23:55] <Kakadu> руки сдвинулись ТТ
[22:24:19] <bobry> да я чета не знаю какой вариант лучше
[22:24:35] <bobry> тупой вариант тупо зафигачить все глобальные переменные в env (global.ml)
[22:25:22] ftrvxmtrx вышел(а) из комнаты
[22:25:22] <bobry> ну или можно сделать как в oasis'e
[22:25:27] <bobry> там эти переменные независимы от шелла
[22:28:19] <Kakadu> я вижу только один вариант: вставить несколько string_replace перед обработкой депенденса
[22:28:54] <bobry> ну это да, просто string replace для шелл переменных уже есть
[22:47:25] komar вышел(а) из комнаты: Replaced by new connection
[22:47:25] komar вошёл(а) в комнату
[22:55:06] tilarids вышел(а) из комнаты
[22:57:52] shaggie вышел(а) из комнаты
[22:59:22] ftrvxmtrx вошёл(а) в комнату
[23:24:22] ermine вышел(а) из комнаты
[23:26:36] <Kakadu> bobry: у нас сейчас все $name берутся из шелла?
[23:28:36] <bobry> ага
[23:30:42] Typhon вошёл(а) в комнату
[23:38:21] tilarids вошёл(а) в комнату
[23:39:04] <tilarids> а кто может мембера дать, чтобы не приходилось капчу каждый раз вводить?
[23:39:21] <bobry> gds, f[x]?
[23:39:36] <gds> ща
[23:39:40] <bobry> sannysanҨff: я смотрю у нас тут х-листов прибыло :)
[23:40:32] gds' вошёл(а) в комнату
[23:41:05] <tilarids> спс
[23:41:28] gds' вышел(а) из комнаты
[23:41:59] <gds> а с тем кодом я так и не разобрался толком.
[23:42:14] <sannysanҨff> bobry: я тут посмотреть на тиларидзову проблему
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!