Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 12 марта 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:17:42] komar вышел(а) из комнаты
[00:22:56] <gds> tilarids: посмотрел таки код.  мой вывод: без изменения структур данных либо алгоритма -- маловероятно, что упустил что-то существенное, что могло бы ускорить работу.  впрочем, судя по gprof (по количеству вызовов), программка действительно много всего делает.  (зря делает, не зря -- не вникал в алгоритм.)
[00:37:54] <tilarids> gds, сейчас перевожу на С++ дословно, посмотрим
[00:42:32] <gds> tilarids: да, мне бы тоже хотелось посмотреть на решения на других языках.  Хотя бы чтобы понять, где и что в окамловских программах стоит оптимизировать.
собственно, там многочисленные вызовы Int_set-функций, и интересно, как оно будет выглядеть на плюсах.  (в том числе сбалансированное дерево -- там обязано быть, вроде; в какой-то из либ.)
В идеале лично мне хотелось бы посмотреть, как плюсы будут это всё делать при условии, что функция сравнения двух элементов будет передана как указатель на функцию и будет вызываться на каждое сравнение.  Но это -- лично мой интерес, к данной задаче и к оптимизации её решения не имеет отношения.
[00:44:04] <bobry> там set таки тоже на дереве -- http://www.cplusplus.com/reference/stl/set/, стало быть асимптотика должна остаться такой же
[00:45:10] <bobry> tilarids: кстати спасибо за конкурс, я про него до этого не слышал, а задачка выглядит очень вкусно :)
[00:53:31] <tilarids> bobry, да, там прикольные задачки, раз в месяц
[00:57:07] komar вошёл(а) в комнату
[01:02:55] <tilarids> мда :)
[01:02:58] <tilarids> переписал на плюса
[01:03:09] <tilarids> на плюсах медленней
[01:03:19] <tilarids> если дословно переводить, с рекурсией и копированием
[01:05:33] <bobry> забавно -- давай весь этот код в один gist?
[01:05:43] <bobry> я как раз завтра с утра гляну :)
[01:07:09] <tilarids> bobry, https://gist.github.com/2018203 - вот
[01:07:12] bobry вышел(а) из комнаты
[01:07:43] <tilarids> перевод дословный, почти один в один, изменения незначительные
[01:30:44] Kakadu вышел(а) из комнаты
[01:32:45] komar вышел(а) из комнаты
[01:50:50] sannysanҨff вышел(а) из комнаты
[02:20:37] vshender вышел(а) из комнаты
[02:40:35] <tilarids> хотя обманул, я там алгоритм слегка поменял. Но завтра уже покажу соответствующий код на камле
[03:12:16] f[x] вошёл(а) в комнату
[03:33:17] letrec вошёл(а) в комнату
[04:43:29] Typhon вышел(а) из комнаты
[04:49:02] letrec вышел(а) из комнаты
[06:03:31] f[x] вышел(а) из комнаты: Computer went to sleep
[06:52:00] ermine вошёл(а) в комнату
[08:03:47] superbobry вошёл(а) в комнату
[08:08:04] <superbobry> я тут подумал, может таки запилить тупой индекс в барбару, положить в _dep файлик где на каждой строчке будет установленный пакет
[11:14:05] komar вошёл(а) в комнату
[11:28:10] ftrvxmtrx вышел(а) из комнаты
[11:43:00] Mon вошёл(а) в комнату
[11:48:07] ftrvxmtrx вошёл(а) в комнату
[11:51:20] komar вышел(а) из комнаты
[12:02:15] ftrvxmtrx вышел(а) из комнаты
[12:02:50] ftrvxmtrx вошёл(а) в комнату
[12:04:40] komar вошёл(а) в комнату
[12:07:31] ftrvxmtrx вышел(а) из комнаты
[12:09:56] ftrvxmtrx вошёл(а) в комнату
[12:19:54] shaggie вошёл(а) в комнату
[12:50:16] Mon вышел(а) из комнаты
[12:50:42] Mon вошёл(а) в комнату
[12:52:08] Kakadu вошёл(а) в комнату
[12:53:36] <f[x]> ха -> https://github.com/OCamlPro/ocamlexc
[12:53:40] <f[x]> реанимировали
[12:54:23] <Kakadu> superbobry: > я тут подумал, может таки запилить тупой индекс в барбару, положить в _dep файлик где на каждой строчке будет установленный пакет
а через камлофайнд нельзя доставать?
[12:56:52] <superbobry> Kakadu, так та можно, но тогда придется для рецептов указывать или выводить имя в камлофайнде
[12:57:38] <Kakadu> superbobry: а, ты хочешь писать в файлик пакет и соответствующий ему рецепт?
[12:57:57] <superbobry> не, я ничего не знаю про пакеты
[12:58:00] <f[x]> tilarids: как запустить чтобы дольше выполнялось?
[12:58:08] <superbobry> к тому же не все используют ocamlfind
[12:58:11] <f[x]> let () = partial_solution (build_arr 7 4) 5
?
[12:58:13] <superbobry> в общем беда-беда
[12:58:43] <superbobry> Kakadu, может скажем что имя рецепта == имя пакета в камлофайнде? и будем после установки делать ocamlfind query?
[12:59:05] <Kakadu> >  к тому же не все используют ocamlfind
в смысле не у всех пакетов есть META?
[12:59:11] <f[x]> tilarids: какая версия камля кстати?
[12:59:14] <superbobry> ага
[12:59:30] <superbobry> кто то тупо cp *.cmi /usr/lib/foo/bar делает в Makefile
[12:59:37] <f[x]> tilarids: я смотрю http://codepad.org/qvuLbU1A = это актальная версия?
[12:59:55] <f[x]> что-то для 5 он у меня выполняется уже очень долго
[13:00:10] <Kakadu> superbobry: наши супер-патчи использовать не вариант?
[13:03:48] <tilarids> f[x], версия 3.12.1. Не самая актуальная версия это, можно еще резать симметрии и немного иначе предзаполнять дерево, это дает выигрыш до 2-х десятичных порядков
[13:04:30] <tilarids> вообще, после того, как я переписал на плюсах, я понял, что дело не в тормозячести окамля, а нужно просто алгоритм править. Т.е., окамль достаточно быстрый, вопрос снимается
[13:04:48] <tilarids> теперь я знаю способ понять, тормозит ли окамль или нет - переписать на плюсах :)
[13:04:54] <f[x]> tilarids: скажи как запустить с другими параметрами
[13:05:20] <tilarids> с окамля на плюсы переписывается один в один, кстати. Плюсы стали ближе к окамлю с последним стандартом
[13:05:56] <tilarids> f[x], let () = partial_solution (build_arr 14 5) 5;; (* для уровня 5, с предзаполнением 14 первых элементов *)
[13:06:22] komar вышел(а) из комнаты
[13:06:44] komar вошёл(а) в комнату
[13:06:57] <Kakadu> а у вас где-то в loop тормоза?
[13:07:38] <tilarids> да нет там особых тормозов из-за языка/стандартной библиотеки. Тормоза - из-за количества перебираемых вариантов
[13:08:10] <tilarids> afk
[13:10:29] <f[x]> для 5 сколько оно выплняется примерно?
[13:13:39] <Kakadu> все уже смотрели на клон барбры https://github.com/OCamlPro/ocp-get ?
[13:16:21] <f[x]> BatInt.compare в batteries 1.2.2 например дёргает полиморфный compare
[13:16:48] <f[x]> в git версии они уже пофиксили - фиг знает влияет ли это на тебя
[13:17:09] <f[x]> для 5 у меня около 7 минут
[13:25:36] tilarids вышел(а) из комнаты
[13:47:00] vshender вошёл(а) в комнату
[13:48:12] tilarids вошёл(а) в комнату
[13:51:09] vshender вышел(а) из комнаты
[13:59:16] <superbobry> Kakadu, это скорее клон odb -- централизованный bs
[14:08:01] Mon вышел(а) из комнаты
[14:09:03] Mon вошёл(а) в комнату
[14:13:54] superbobry вышел(а) из комнаты
[14:14:35] superbobry вошёл(а) в комнату
[14:40:35] Typhon вошёл(а) в комнату
[14:40:42] vshender вошёл(а) в комнату
[14:43:45] <superbobry> чертовы мейкопейсатели, нефига не работает https://github.com/m2ym/ocaml-lang-python
[14:44:02] <superbobry> кто подскажет мне почему при сборке parser.mly не находится модуль Ast?
[14:45:05] <f[x]> можео оно хочет ast из недров камля?
[14:45:48] <superbobry> не, там есть ast.ml в src/
[14:49:59] <f[x]> superbobry: УМВР
[14:50:27] <superbobry> f[x], я прально пишут та? просто omake и все?
[14:50:31] <superbobry> а какая у тебя версия omake?
[14:50:52] <f[x]> угу
[14:50:54] <f[x]> OMake 0.9.8.5 (release 3)
[14:51:10] <superbobry> у меня такая же, странно
[14:56:10] <f[x]> ocaml 3.11.2
[14:56:28] <superbobry> хм, а у меня 3.12 -- но как то с трудом верится что дело в нем
[14:56:51] <f[x]> 3.12.1 - тоже ок
[14:56:56] <f[x]> покажи лог
[14:57:13] <f[x]> omake --verbose
[14:59:52] <superbobry> http://paste.in.ua/3985/
[15:01:39] <f[x]> git clean -fdx сделай
[15:02:30] <superbobry> уже
[15:02:59] <superbobry> обновил paste
[15:17:40] <Kakadu> superbobry: а мы сейчас можем в барбре переопределить _dep?
[15:20:18] letrec вошёл(а) в комнату
[15:20:26] letrec вышел(а) из комнаты
[15:20:29] <Kakadu> superbobry: надо в рецепты, которые собираются omake добавлять omake в requires?
[15:20:42] letrec вошёл(а) в комнату
[15:21:40] <superbobry> думаю надо
[15:21:57] <superbobry> Kakadu, что значит "переопределить _dep"?
[15:22:26] <Kakadu> ну чтобы оно ставилось не в _dep/local/lib а в /local/lib
[15:23:21] <superbobry> а зачем?
[15:23:46] <Kakadu> а чтобы я барброй поставил в цигвине всё что я хочу
[15:24:21] <superbobry> гм, ну так та можно при компиляции поменять Global.dep_dir
[15:30:55] letrec вышел(а) из комнаты
[15:31:57] Mon вышел(а) из комнаты
[15:37:30] letrec вошёл(а) в комнату
[16:09:25] <f[x]> superbobry: у меня он в другом порядке билдит
[16:09:28] <f[x]> ast перед parser
[16:10:27] <superbobry> гм, интересно как определяется порядок
[16:10:38] <f[x]> написано что автомагически :)
[16:10:51] <f[x]> у тебя omake откуда?
[16:11:14] <f[x]> что за дистр?
[16:11:17] <Kakadu> http://people.csail.mit.edu/dnj/teaching/6898/projects/vicente-wagner.pdf
[16:11:24] <superbobry> из brew он у меня
[16:12:34] <f[x]> в дебиане никаких релевантных патчей нет
[16:12:44] <f[x]> mac?
[16:12:48] <f[x]> ну тогда ссзб
[16:12:54] <f[x]> мало ли что там могло поломаться
[16:13:00] <Kakadu> арч у него вроде
[16:13:14] <Kakadu> или пиво тока под мак?
[16:14:08] <f[x]> superbobry: ^^ ?
[16:15:23] <superbobry> мак на работе, а арч дома
[16:15:56] <Kakadu> удали brew, юзай барбру, будь мужыком, блеать (с)
[16:16:04] <superbobry> f[x]: оно тупо качает и билдит тарбол йома
[16:16:09] <superbobry> качает вот отсюда http://omake.metaprl.org/downloads/omake-0.9.8.5-3.tar.gz
[16:17:02] <f[x]> superbobry: http://paste.in.ua/3986/
[16:17:32] <f[x]> superbobry: можешь мне тогда extunix из git'а затестить - собрать и скинуть лог
[16:17:40] <f[x]> и make test на всякий случай
[16:19:40] <f[x]> git clone http://forge.ocamlcore.org/anonscm/git/extunix/extunix.git && cd extunix && make test &> extunix.log
[16:21:21] <superbobry> sure
[16:23:59] <superbobry> f[x]: brb.conf где? :)
[16:24:15] <Kakadu> в репке
[16:24:21] <Kakadu> я вроде делал
[16:24:22] <superbobry> нету!
[16:24:57] <f[x]> там релиз
[16:25:40] <f[x]> я вообще вон шелл заклинание скинул
[16:26:06] <f[x]> superbobry: и покажи что там omake говорит про зависимости
[16:27:47] <superbobry> f[x]: http://paste.in.ua/3987/
[16:28:01] <superbobry> ounit'a то нема, заклинание не работает
[16:28:18] <f[x]> аргх, мне нужон вывод configure в первую очередь!
[16:28:48] <superbobry> тьфу ты, щас
[16:30:13] <superbobry> обновил paste
[16:31:08] <superbobry> а про зависимости ничего нового http://paste.in.ua/3988/
[16:31:20] <f[x]> благодарю!
[16:31:44] <superbobry> any time :)
[16:32:05] <f[x]> superbobry: -debug-deps
[16:32:23] f[x] грепает вывод omake -h по слову depend :)
[16:33:57] <superbobry> f[x]: не доходит он похоже до зависимостей
[16:34:12] <superbobry> пробую 'omake -debug-deps --depend -U --print-dependencies src/parser.cmx'
[16:34:18] <superbobry> получаю такую же ошибку
[16:35:22] <f[x]> с такой командой я тоже получаю ошибку
[16:35:24] <f[x]> Error: Unbound module type Ast.Annot
[16:35:36] <f[x]> сделай просто git clean -fdx && omake -debug-deps
[16:36:51] <superbobry> о! так больше показывает http://paste.in.ua/3989/
[16:37:54] <f[x]> мой - http://paste.in.ua/3990/
[16:38:22] <superbobry> гм, неужто это ocamldep?
[16:39:58] <f[x]> у меня с 3.12 собирается, так что непонятно
[16:40:04] <f[x]> депы вроде совпадают
[16:40:27] <f[x]> но оно почему-то в разном порядке билдит - мне получается везёт и ast.cmi есть перед сборкой парсера
[16:40:35] <f[x]> а у тебя нет
[16:43:04] <superbobry> странно конечно
[16:43:30] <f[x]> думаю можно с --verbose -debug-deps делать предъяву авторам
[16:44:07] <superbobry> omake должен уйти, однозначно
[16:50:53] <Kakadu> superbobry: а это правда что если 5 штук cat /dev/urandom > /dev/null запустить, то мак повиснет?
[16:51:07] <superbobry> давай я в другой раз это проверю? :)
[16:51:26] <Kakadu> superbobry: :D
[17:03:52] vshender вышел(а) из комнаты
[17:04:23] vshender вошёл(а) в комнату
[17:10:38] komar вышел(а) из комнаты
[17:13:31] komar вошёл(а) в комнату
[17:18:53] <Kakadu> superbobry: надо сформулировать как базовый набор установленных вещей нужен для барбры
[17:19:34] <superbobry> Kakadu, в смысле программ? git, svn, tar, etc?
[17:19:44] <Kakadu> не, кмлёвых вещей
[17:19:51] <superbobry> так никакой же
[17:19:56] <superbobry> ocamlfind + ocaml
[17:20:01] <Kakadu> а оазис?
[17:20:04] <superbobry> неа
[17:23:27] <Kakadu> кажись чтобы сейчас борать кору барброй нужен оазис
[17:26:46] <superbobry> наверное потому что они не хранят автогенеренные файлы в  репке
[17:26:58] <superbobry> и их make делает 'oasis setup'
[17:27:07] superbobry вышел(а) из комнаты
[17:27:26] <Kakadu> а под цигвином не собираются батарейки (ибо похоже что инсталлятор ромашки плохо инсталлит)
[17:30:01] <Kakadu> опасения подтвердились
[17:58:18] vshender вышел(а) из комнаты
[17:58:47] vshender вошёл(а) в комнату
[18:01:04] komar вышел(а) из комнаты
[18:11:29] ftrvxmtrx вошёл(а) в комнату
[18:12:24] <Kakadu> gds: а я правильно понимаю что итераты и парсер-комбинаторы --- родственники?
[18:15:47] <gds> Kakadu: кое-что общее есть.  Но они с разных сторон от общего стоят.
[18:16:07] <f[x]> общее - ими можно парсить
[18:16:31] <Kakadu> я думаю может помянуть из в своей писанине, чтобы выглядело по-солиднее
[18:16:54] <Kakadu> их*
[18:17:52] ftrvxmtrx вышел(а) из комнаты
[18:19:21] <gds> не надо их приплетать, иногда за это надо будет отвечать на защите или где там.
[18:20:39] <Kakadu> ладно
[18:21:57] <gds> Kakadu: в том моём туториале по итератам погляди, общая идея будет понятна.  И на том уровне, как я там описал, будет достаточно рассказать (в случае, если спросят), и этого будет достаточно.
[18:25:56] <Kakadu> да я вроде примерно понял твой туториал
[18:26:30] <gds> ну и вот, комбинаторы, да.  парсят, да.  фактически -- парсер-комбинаторы.
[18:39:50] komar вошёл(а) в комнату
[19:33:47] <Kakadu> bobry: теоритически в будущем пригодится параллельная компиляция рецептов барброй. Но в далеком будущем
[19:45:20] Kakadu вышел(а) из комнаты
[19:52:39] Typhon вышел(а) из комнаты
[19:57:36] <f[x]> как наименее вербозно сделать два класса с одним интерфейсом так чтобы можно было делать (if x then new class1 else new class2)
[19:57:49] <f[x]> выписать class type и при объявлении класса его указать?
[19:57:59] <f[x]> или кастить при создании?
[19:59:37] <gds> а если тупо без class type, может прокатит?
[19:59:50] <gds> если интерфейсы одинаковые, конечно.
[20:00:57] <f[x]> я думал что одинаковые - оказалось что нет :)
[20:01:08] <f[x]> так что сейчас приведу к одинаковому и попробую без явного class type
[20:01:30] <gds> если разные -- придётся явно выписывать общий интерфейс.
кастить при new class1 / new class2 -- это значит иметь классы неограниченные сами по себе, но так, чтобы функция возвращала общий интерфейс.
кастить при class .. object (self : ...) -- значит ограничить каждый класс одинаковым интерфейсом.
[20:02:24] <gds> вот и смотри, что надо.
а можно, вроде,
class class1 = object (self) ...
class class2 = object (self : #class1) ...
, тогда class1 задаёт интерфейс неявно.
[20:03:10] <gds> тогда разумно объявить минимальный класс без ограничений, а остальные ограничить его типом.
[20:03:39] <gds> но если <a ; b> vs <a ; c>, и эти b и c нужны, но жопка.
[20:06:45] <f[x]> я всего этого избежал - просто привёл к одному интерфейсу
[20:07:06] <f[x]> в такие дебри стараюсь не лазить
[20:07:53] <f[x]> вот эта вот папира про gang four на камле - пиршество больного разума
[20:08:01] <gds> какая?
[20:08:42] <f[x]> http://people.csail.mit.edu/dnj/teaching/6898/projects/vicente-wagner.pdf
[20:08:55] <f[x]> Kakadu постил сегодня
[20:11:10] <gds> так, теперь второй вопрос: как развидеть?
[20:14:25] <f[x]> я предупреждал
[20:25:34] letrec вышел(а) из комнаты
[20:32:35] Kakadu вошёл(а) в комнату
[20:34:36] ftrvxmtrx вышел(а) из комнаты
[20:42:10] <Kakadu> tilarids: там твою задачу планируют переписать на до-диез и посмотреть что будет
[21:03:01] shaggie вышел(а) из комнаты
[21:32:14] vshender вышел(а) из комнаты
[21:51:07] komar вышел(а) из комнаты
[21:51:20] komar вошёл(а) в комнату
[21:59:10] <tilarids> Kakadu, ничего особого не будет. Не в языках дело, решили уже ж
[22:14:23] komar вышел(а) из комнаты
[22:17:01] komar вошёл(а) в комнату
[22:18:52] tilarids вышел(а) из комнаты
[22:28:32] bobry вошёл(а) в комнату
[22:35:57] <gds> рассылка: лерой пояснил свою шутку.  шок.
[22:40:44] shaggie вошёл(а) в комнату
[22:44:13] <bobry> шо за шутка? я опять вс пропустил?
[22:47:19] <gds> шутка про то, что в случаях использования ассоциативных списков у программ на окамле возникнет очередная уязвимость, вызывающая неконтролируемое поедание процессора и памяти.
[23:02:38] ermine вышел(а) из комнаты
[23:11:21] tilarids вошёл(а) в комнату
[23:22:19] vshender вошёл(а) в комнату
[23:27:55] dzhon вошёл(а) в комнату
[23:35:00] vshender вышел(а) из комнаты
[23:35:48] Kakadu вышел(а) из комнаты
[23:40:27] Kakadu вошёл(а) в комнату
[23:44:33] bobry вышел(а) из комнаты
[23:50:47] vshender вошёл(а) в комнату
[23:55:00] vshender вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!