Home
Objective Caml
ocaml@conference.jabber.ru
Суббота, 1 октября 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
Конфигурация комнаты
Участники комнаты

GMT+4
[00:35:13] Kakadu вышел(а) из комнаты
[01:08:51] Typhon вышел(а) из комнаты: Replaced by new connection
[01:08:53] Typhon вошёл(а) в комнату
[01:19:06] ftrvxmtrx вышел(а) из комнаты
[01:31:40] ftrvxmtrx вошёл(а) в комнату
[01:33:06] komar вышел(а) из комнаты: Replaced by new connection
[01:33:06] komar вошёл(а) в комнату
[01:37:26] bobry вошёл(а) в комнату
[01:41:29] ygrek вышел(а) из комнаты
[01:50:02] ftrvxmtrx вышел(а) из комнаты
[02:37:44] shaggie вышел(а) из комнаты
[02:38:55] komar вышел(а) из комнаты: Replaced by new connection
[02:38:55] komar вошёл(а) в комнату
[02:51:56] gds вышел(а) из комнаты
[03:12:34] bobry вышел(а) из комнаты
[03:22:31] Typhon вышел(а) из комнаты
[06:25:45] ftrvxmtrx вошёл(а) в комнату
[06:26:16] ftrvxmtrx вышел(а) из комнаты
[06:27:25] ftrvxmtrx вошёл(а) в комнату
[06:35:20] letrec вошёл(а) в комнату
[07:01:49] komar вышел(а) из комнаты
[09:23:24] bobry вошёл(а) в комнату
[09:43:56] letrec вышел(а) из комнаты
[10:50:25] Kakadu вошёл(а) в комнату
[11:25:53] ygrek вошёл(а) в комнату
[11:58:56] Typhon вошёл(а) в комнату
[12:02:19] Typhon вышел(а) из комнаты: Replaced by new connection
[12:02:21] Typhon вошёл(а) в комнату
[12:22:43] ermine вошёл(а) в комнату
[12:27:00] gds вошёл(а) в комнату
[12:41:18] ygrek вышел(а) из комнаты
[13:43:47] komar вошёл(а) в комнату
[13:53:07] ygrek вошёл(а) в комнату
[14:00:31] letrec вошёл(а) в комнату
[14:00:35] letrec вышел(а) из комнаты
[14:01:41] letrec вошёл(а) в комнату
[15:23:45] Kakadu вошёл(а) в комнату
[15:23:59] Kakadu вышел(а) из комнаты
[15:41:41] komar вышел(а) из комнаты
[16:03:57] ftrvxmtrx вышел(а) из комнаты
[16:07:34] ftrvxmtrx вошёл(а) в комнату
[16:08:52] shaggie вошёл(а) в комнату
[16:10:05] shaggie вышел(а) из комнаты
[16:13:27] shaggie вошёл(а) в комнату
[16:57:04] Typhon вышел(а) из комнаты: Replaced by new connection
[16:57:06] Typhon вошёл(а) в комнату
[17:22:04] Typhon вышел(а) из комнаты: Replaced by new connection
[17:22:07] Typhon вошёл(а) в комнату
[17:25:15] ftrvxmtrx вышел(а) из комнаты
[17:27:12] ftrvxmtrx вошёл(а) в комнату
[17:34:35] ftrvxmtrx вышел(а) из комнаты
[17:35:05] ftrvxmtrx вошёл(а) в комнату
[17:35:58] ftrvxmtrx вышел(а) из комнаты
[17:36:13] ftrvxmtrx вошёл(а) в комнату
[17:37:34] ftrvxmtrx вышел(а) из комнаты
[17:38:06] ftrvxmtrx вошёл(а) в комнату
[17:50:39] shaggie вышел(а) из комнаты
[17:50:59] ftrvxmtrx вышел(а) из комнаты
[17:51:14] ftrvxmtrx вошёл(а) в комнату
[17:52:14] ftrvxmtrx вышел(а) из комнаты
[17:52:40] ftrvxmtrx вошёл(а) в комнату
[17:53:14] ftrvxmtrx вышел(а) из комнаты
[17:54:55] ftrvxmtrx вошёл(а) в комнату
[17:55:55] ftrvxmtrx вышел(а) из комнаты
[17:56:08] ftrvxmtrx вошёл(а) в комнату
[17:57:13] ftrvxmtrx вышел(а) из комнаты
[17:59:39] ftrvxmtrx вошёл(а) в комнату
[18:05:35] ftrvxmtrx вышел(а) из комнаты
[18:05:48] ftrvxmtrx вошёл(а) в комнату
[18:07:23] ftrvxmtrx вышел(а) из комнаты
[18:08:56] ftrvxmtrx вошёл(а) в комнату
[18:10:39] ftrvxmtrx вышел(а) из комнаты
[18:11:01] ftrvxmtrx вошёл(а) в комнату
[18:19:37] ftrvxmtrx вышел(а) из комнаты
[18:21:39] ftrvxmtrx вошёл(а) в комнату
[18:22:27] ftrvxmtrx вышел(а) из комнаты
[18:22:50] ftrvxmtrx вошёл(а) в комнату
[18:23:40] ftrvxmtrx вышел(а) из комнаты
[18:24:28] ftrvxmtrx вошёл(а) в комнату
[18:27:22] ftrvxmtrx вышел(а) из комнаты
[18:28:06] ftrvxmtrx вошёл(а) в комнату
[18:29:43] ftrvxmtrx вышел(а) из комнаты
[18:30:13] ftrvxmtrx вошёл(а) в комнату
[18:31:28] ftrvxmtrx вышел(а) из комнаты
[18:31:54] ftrvxmtrx вошёл(а) в комнату
[18:36:30] ftrvxmtrx вышел(а) из комнаты
[18:38:26] <bobry> gds: это что за расширение такое?
[18:38:32] ftrvxmtrx вошёл(а) в комнату
[18:40:53] ftrvxmtrx вышел(а) из комнаты
[18:42:39] ftrvxmtrx вошёл(а) в комнату
[18:43:55] <gds> rectypes?
[18:50:28] ftrvxmtrx вышел(а) из комнаты
[18:51:14] ftrvxmtrx вошёл(а) в комнату
[18:52:44] <Kakadu> bobry опять куда-то девался
[18:54:35] ftrvxmtrx вышел(а) из комнаты
[18:55:01] ftrvxmtrx вошёл(а) в комнату
[18:56:38] ftrvxmtrx вышел(а) из комнаты
[18:57:22] ftrvxmtrx вошёл(а) в комнату
[19:02:07] ftrvxmtrx вышел(а) из комнаты
[19:02:30] ftrvxmtrx вошёл(а) в комнату
[19:06:56] ftrvxmtrx вышел(а) из комнаты
[19:07:08] ftrvxmtrx вошёл(а) в комнату
[19:08:34] <Typhon> а кто тут на дебиане/убунте ставил камло (3.12) из пакетов? либы, которые не в пакетах потом куда ставите?
[19:08:39] ftrvxmtrx вышел(а) из комнаты
[19:08:44] <Typhon> (и ставите ли либы из пакетов)
[19:08:48] ftrvxmtrx вошёл(а) в комнату
[19:09:05] <Kakadu> как само ставится так и ставим
[19:09:13] <Kakadu> в /usr/local/lib/ocaml
[19:10:09] ftrvxmtrx вышел(а) из комнаты
[19:10:58] ftrvxmtrx вошёл(а) в комнату
[19:13:51] ftrvxmtrx вышел(а) из комнаты
[19:14:18] ftrvxmtrx вошёл(а) в комнату
[19:15:06] ftrvxmtrx вышел(а) из комнаты
[19:15:28] ftrvxmtrx вошёл(а) в комнату
[19:17:01] ftrvxmtrx вышел(а) из комнаты
[19:17:40] ftrvxmtrx вошёл(а) в комнату
[19:19:16] ftrvxmtrx вышел(а) из комнаты
[19:19:50] ftrvxmtrx вошёл(а) в комнату
[19:20:25] ftrvxmtrx вышел(а) из комнаты
[19:21:02] ftrvxmtrx вошёл(а) в комнату
[19:22:47] ftrvxmtrx вышел(а) из комнаты
[19:24:43] ftrvxmtrx вошёл(а) в комнату
[19:28:08] ftrvxmtrx вышел(а) из комнаты
[19:28:52] ftrvxmtrx вошёл(а) в комнату
[19:29:25] <Typhon> а odb всё кладёт по дефолту в .odb %) чота пока два места разных получается, в таком сетапе, и ещё может третье появится
[19:29:39] ftrvxmtrx вышел(а) из комнаты
[19:29:53] <Kakadu> а что такое odb?
[19:30:39] ftrvxmtrx вошёл(а) в комнату
[19:32:16] <Typhon> https://github.com/thelema/odb
[19:32:40] ftrvxmtrx вышел(а) из комнаты
[19:33:09] ftrvxmtrx вошёл(а) в комнату
[19:34:39] <Typhon> (попробую пока только с ним жить, и с ручной сборкой, без системных. хотя хз, правильно ли это :-) )
[19:37:08] ftrvxmtrx вышел(а) из комнаты
[19:37:40] <bobry> gds: ага
[19:37:50] ftrvxmtrx вошёл(а) в комнату
[19:37:56] <bobry> Typhon: подключи oneiric -- там уже все из debian sid скрадено
[19:38:38] <Typhon> bobry, я подключил пока то репо, которое в вике написано, чтобы 3.12 поставить
[19:38:54] <Typhon> а в сиде/онерике типа все-все пакеты есть? :-)
[19:38:56] <bobry> Typhon: инфа чутка поменялась, теперь надо просто oneiric подклчать
[19:39:00] <bobry> почти все
[19:39:00] <Kakadu> Typhon: 3.12.1 !!!
[19:39:07] <Typhon> да, 3.12.1 %)
[19:39:17] <Typhon> у меня тут свежая система, экспериментирую с сетапами
[19:39:25] <gds> bobry: -rectypes "Allow arbitrary recursive types during type-checking. By default, only recursive types where the recursion goes through an object type are supported." -- но херня какая-то, судя по описанию.
[19:39:29] <Typhon> bobry, ! добавишь в вике линки/гайды?
[19:39:58] <bobry> Typhon: я увы больше убунту не пользую -- так шо могу соврать
[19:40:35] <Typhon> а может ссылки есть под рукой, где написано про?
[19:40:43] <gds> про -rectypes и lazy, важное: "Note: if the program is compiled with the -rectypes option,    ill-founded recursive definitions of the form let rec x = lazy x    or let rec x = lazy(lazy(...(lazy x))) are accepted by the type-checker    and lead, when forced, to ill-formed values that trigger infinite    loops in the garbage collector and other parts of the run-time system.    Without the -rectypes option, such ill-founded recursive definitions    are rejected by the type-checker."
[19:41:02] <Typhon> (я могу сам чо-нить сделать, но может какие есть ppa и прочие вещи интересные)
[19:41:48] ftrvxmtrx вышел(а) из комнаты
[19:42:05] ftrvxmtrx вошёл(а) в комнату
[19:42:06] <Typhon> (пока на уме apt preferences + sources.list.d %) )
[19:42:09] <Kakadu> bobry: ты планируешь дособрать lablqt?
[19:42:38] <Kakadu> чтобы я gds'a запросил на тест
[19:42:58] ftrvxmtrx вышел(а) из комнаты
[19:43:05] <Kakadu> он наверняка ещё небилдящееся найдет совими 100500 верблюдами :)
[19:43:17] ftrvxmtrx вошёл(а) в комнату
[19:43:38] <gds> буду только под линупсом пробовать, сейчас у меня венда далеко/неприятно доступна.
[19:44:00] <Typhon> Kakadu, реально ли в текущем состоянии нафигачить АудиоПлеерМоейМечты -- окно разбито на две части, слева -- FileTreeView, справа -- TabbedWindow со списками ?
[19:44:02] <gds> но вот core напрягает чуток.  надо бы его тоже втащить, получается.
[19:44:19] <Typhon> что-то core всех напрягает :D
[19:44:24] <Typhon> судя по тому, что пишут люди
[19:45:03] <Kakadu> Typhon: FileTreeView --- такого класса не видел я в кути
[19:45:20] <Typhon> ну я условно его так назвал -- можно просто Tree
[19:45:26] <Typhon> в общем, я хочу фубар под линупс %)
[19:45:26] <gds> там вообще мудота была с моттлом, РЕПОЗИТОРИИ РАЗОРВАЛО НАДВОЕ БАМП ВЕРСИЙ ОНАЛ, потому и непонятки в последнее время.  Скомпилять-то не проблема.
[19:46:01] <gds> пользовать core -- ну не знаю, пока не задумывался, но может и стоило бы.
[19:46:17] <bobry> Typhon: ppa нету afaik,
[19:46:20] ftrvxmtrx вышел(а) из комнаты
[19:46:59] <bobry> Typhon: deadbeef пробовал?
[19:47:06] <gds> кстати да, фубароподобное неплохо бы, ибо к фубару претензии только про авторов-дебилов.
[19:47:27] <bobry> ну кстате я очень люблю clemetine -- он с каждым релизом все кошерней
[19:47:36] <bobry> если кто не знает -- это такой амарок3 на qt4
[19:47:41] <bobry> Kakadu: lablqt соберу ага
[19:48:33] ftrvxmtrx вошёл(а) в комнату
[19:49:58] Typhon вышел(а) из комнаты: Replaced by new connection
[19:49:59] <Kakadu> Typhon: ну пока есть тестовый пример с таким: http://oi55.tinypic.com/2hh3hwm.jpg
[19:50:00] Typhon вошёл(а) в комнату
[19:50:15] ftrvxmtrx вышел(а) из комнаты
[19:52:13] <Typhon> bobry, только страницу смотрел, кажется, он навороченный слишком, емнип
[19:52:41] <bobry> та самое оно
[19:52:51] <Kakadu> moc самое оно
[19:53:01] <bobry> Kakadu: moc UserSlots.h > moc_UserSlots.cpp
g++ -g -I.. -I/usr/include/qt4/ -I/usr/include/qt4/QtCore -I`ocamlc -where`   -c moc_UserSlots.cpp
In file included from moc_UserSlots.cpp:10:0:
UserSlots.h:5:19: fatal error: QObject: No such file or directory
[19:53:08] <Typhon> мне не нужны библиотеки, мне нужен файл браузер, у меня у самого как надо раскидано всё :-)
[19:53:20] <Kakadu> да ладно
[19:53:23] <Kakadu> ты меня троллишь
[19:53:46] <Kakadu> сделай ls /usr/include/qt4
[19:56:12] <gds> Kakadu: тестовый пример хороший.
[19:59:49] <gds> кстати, геморок/qt обладает у меня странным свойством: почти любой клик мыши, если мышь не движется, воспринимает как-то превратно: в случае с кликом на окне media sources home > local music -- пытается предложить мне перетащить альбом[ы] в плейлист, правой кнопкой щелчок на плейлисте воспринимает как вызов первого пункта контекстного меню (у меня -- queue / dequeue track).  Интересно, это всё qt такое, или это просто геморок такой у меня?
[20:00:24] <Kakadu> gds: используй moc
[20:00:28] ftrvxmtrx вошёл(а) в комнату
[20:01:03] <gds> (сейчас сделал apt-get upgrade -- предложило обновить несвязанные пакеты)
[20:02:09] <gds> Kakadu: с какой целью использовать moc?
[20:02:35] <bobry> Kakadu: у меня нет /usr/include/qt4
[20:02:46] <bobry> зато там есть пачка Qt*
[20:02:51] <bobry> QtCore, QtNetwork etc
[20:03:49] <bobry> мне кажется правильней не закладываться на эти пути ..
[20:05:11] <gds> про moc -- это про консольный проигрыватель музыки?  да он же сосёт, он с русскими кодировками не дружит.  (геморок тоже, но там хотя бы некоторые фичи есть.)  и в качестве идеального проигрывателя -- не ок.  кроме того, я теперь гламурный пацан, стараюсь только из убунтовских репок ставить софт, йоу.
[20:05:36] <bobry> та пользуйте все клементин
[20:05:39] <bobry> и будем вам счастие
[20:05:46] <gds> (дружить с русскими кодировками == перекодировать по частотному анал-лизу.)
[20:06:02] <Kakadu> gds: просто напильник у тебя затупился :)
[20:06:21] <Typhon> bobry, ща после дедбифа будет клементина
[20:06:53] <bobry> Typhon: дедбиф всем хорош -- но я просто предпочитаю плееры с библиотекой
[20:07:21] <gds> Kakadu: есть такие вещи, где ну настолько западло обнажать свой смазанный напильник, что проще забить.  Они и без меня своими, так сказать, надфилями допилят.
[20:07:50] <bobry> Kakadu: все тесты собрались
[20:08:04] <Kakadu> ну позапускай последние 2
[20:08:25] <bobry> все кошерно
[20:09:01] <gds> я хоть правильно пишу название проигрывателя? http://paste.in.ua/3119/
[20:09:52] <Kakadu> вроде
[20:09:57] <Typhon> http://www.clementine-player.org/ видимо в ppa каких-нибудь
[20:10:12] <bobry> gds: оно до репок еще не дошло -- но дебы у них имеются
[20:10:49] ftrvxmtrx вышел(а) из комнаты
[20:11:06] <bobry> Kakadu: теперь бы это все чудо на oasis мм.. и пофиксить инклюды QObject
[20:11:08] ftrvxmtrx вошёл(а) в комнату
[20:12:30] <Typhon> bobry, а есть у клементины файлбраузер? а то я увидел, что он под макось есть, а мне под макось бы проигрыватель нормальный тоже заиметь. сонгбёрд почти всем хорош, но туповат местами
[20:12:59] <gds> клёвый он на вид, этот клементин.  дебы -- это хорошо, ppa -- пока для меня alien technology, пока воздержусь.
[20:13:05] ftrvxmtrx вышел(а) из комнаты
[20:13:18] ftrvxmtrx вошёл(а) в комнату
[20:13:44] <Typhon> ppa - ок, главное сразу ppa-purge поставить %) чем ppa лучше дебов -- апдейты в комплекте
[20:14:00] <gds> Kakadu, bobry, пока не старайтесь "на оазис", это имхо "финальный штрих".  а то можете гемора нажить себе лишнего.
[20:14:01] ftrvxmtrx вышел(а) из комнаты
[20:14:15] <Typhon> bobry, а как этот клементин с плейлистами работает, на скриншотах не вижу нескольких плейлистов в табах
[20:14:21] <Kakadu> gds: потому я и упираюсб рогами и копытами
[20:14:27] <gds> Typhon: ага, в ассоциативную память положил, учту.
[20:14:29] ftrvxmtrx вошёл(а) в комнату
[20:15:12] ftrvxmtrx вышел(а) из комнаты
[20:15:39] ftrvxmtrx вошёл(а) в комнату
[20:15:51] <gds> Kakadu: да, в твоём случае это правильно.  Получается, что будешь бороться как с собственно сборкой, так и с оазисом.  Если битву можно разделить на две отдельные части -- раздели.
[20:16:06] <bobry> Typhon: я ими не пользуюсь, поэтому не уверен
[20:17:29] ftrvxmtrx вышел(а) из комнаты
[20:17:32] <Kakadu> bobry: а как ты фиксил ?
[20:17:50] ftrvxmtrx вошёл(а) в комнату
[20:20:01] <bobry> Kakadu: добавил -I/usr/include/QtCore
[20:20:22] ftrvxmtrx вышел(а) из комнаты
[20:20:23] <bobry> но вообще если бы ты в файлах инклюдил <QtCore/QObject.h> то ничего не надо было бы инклюдить
[20:20:59] <Kakadu> я тоже это подозревал
[20:21:02] ftrvxmtrx вошёл(а) в комнату
[20:22:59] <bobry> фигню сказал, но надеюсь смысл понятен :)
[20:23:15] <Kakadu> ну я QtCore приписал и запушил
[20:24:35] <bobry> щас попробую
[20:26:32] ftrvxmtrx вышел(а) из комнаты
[20:26:45] ftrvxmtrx вошёл(а) в комнату
[20:27:02] <bobry> Kakadu: works
[20:27:21] <Kakadu> bobry: я предлагаю на оазис положить
[20:28:15] <bobry> я тока за -- но один фик надо будет build.ml оставлять для кодогенерации
[20:28:18] <bobry> ну или какой то аналог
[20:31:05] ftrvxmtrx вышел(а) из комнаты
[20:31:26] ftrvxmtrx вошёл(а) в комнату
[20:32:01] <Typhon> что-то дедбиф плагин "filebrowser" не подцепляет, а без него он бесполезен :-(
[20:32:12] <Kakadu> bobry: скажи как дальше развивать labqt?
[20:33:18] <bobry> Kakadu: лол, я наверное не лучший человек для таких вопросов -- я бы добавил адекватный процесс сборки и документацию с примерами
[20:37:46] <gds> ауминя камлобида.  Натурально не знаю, что делать.  Идея в том, что некоторые функции/методы (типа friend methods; мануал читал, если чо) должны видеть репрезентацию значений, скрытых под объектами.  С другой стороны, объекты нужны только для упрощения работы со структурами данных, поэтому скрывать там нечего.  Ну и вот, есть у нас два объекта, построенных пока внутри функтора (module M = MyMap.Make(OrderedTypeOfKey) ;; let m = new M.map_class), потом -- поверх первоклассных модулей.  И вот, надо слить эти отображения ключей на значения (слить с помощью какой-либо функции над значениями, по пофигу).  А слияние - штука, которая учитывает в том числе внутреннюю структуру (которую я и не прячу особо).  Пока выходит какая-то хрень.  Пытался показать наружу метод, возвращающий type map_repr 'k 'v = [= `Assoc_list of list ('k * 'v) | `Map of (module Map.S with type key = 'k ], ну и различные вариации -- всё до жопы, везде какой-то затык.  Видимо, я, как обычно, углубился в тактику.  Но из стратегии у меня только "сделать слияние различных отображений ключа в значение", много не поварьируешь.
[20:42:44] ftrvxmtrx вышел(а) из комнаты
[20:44:05] ftrvxmtrx вошёл(а) в комнату
[20:49:18] <Kakadu> gds: я ничего не понял
[20:49:25] ftrvxmtrx вышел(а) из комнаты
[20:49:49] ftrvxmtrx вошёл(а) в комнату
[20:51:46] ftrvxmtrx вышел(а) из комнаты
[20:52:04] ftrvxmtrx вошёл(а) в комнату
[21:05:06] ftrvxmtrx вышел(а) из комнаты
[21:05:44] ftrvxmtrx вошёл(а) в комнату
[21:07:55] <gds> ну вот.  Есть тип классов Tfun.map_rws ['k, 'v] https://bitbucket.org/gds/cadastr/src/aea48b8efed9/src/cadastr.ml#cl-100 , которому следуют как ассоциативные списки ( https://bitbucket.org/gds/cadastr/src/aea48b8efed9/src/cadastr.ml#cl-218 , но тут надо лишь метод add оторвать, остальное ок), так и отображения поверх stdlib's Map https://bitbucket.org/gds/cadastr/src/aea48b8efed9/src/cadastr.ml#cl-287 .  Хочется сделать метод, который бы выполнял слияние указанных сущностей с помощью пользовательской функции (в случае "единственных привязок" -- функцией наподобие Map.S.merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t).  Причём так, чтобы работало как для ассоциативных списков, так и для Map.S, Hashtbl.t (в случае мутабельных отображений).
[21:09:03] <gds> понятно, что сливать через Map можем только при определённом упорядочивании по ключу.  Через хеш -- только при определённом хешировании ключа.  Через списки -- только при определённом равенстве.  И это тоже хочется разрулить.
[21:14:08] ftrvxmtrx вышел(а) из комнаты
[21:14:21] ftrvxmtrx вошёл(а) в комнату
[21:16:01] <gds> ещё бида -- допустим, сделали Map.Make(String) и Map.Make(StringNoCaseCmp), и вот как бы определить, можно ли их сливать?  Если через Map всё делать -- нельзя, так как Map.Make(String).t и Map.Make(StringNoCaseCmp).t это разные типы.  У меня -- хз, как оно получится.  По идее, тоже надо как-то предостеречь от такого.
[21:17:52] <gds> кстати, про последнее -- олег для х-я замутил что-то похожее на окамловские функторы через existential type и некое skolem function (это так приём называется).
[21:20:04] <Kakadu> а какой объект ты хочешь чтобы получался после слияния мап?
[21:22:11] <gds> во, это правильный вопрос.  Учитывая, что у меня сирани объекти, наверное, map1#merge myfunc map2 должно возвращать объект, имеющий структуру, подобую map1.  (это и свабодку даёт, и исключает ещё одну головную боль с определением того, что же на самом деле нужно.)
[21:22:49] shaggie вошёл(а) в комнату
[21:23:48] <Kakadu> тогда я не понимаю в чем проблема
[21:24:04] <Kakadu> ты можешь вытащить наружу функцию iter?
[21:28:12] ftrvxmtrx вышел(а) из комнаты
[21:28:38] <gds> iter -- могу и сделаю, без вопросов.  Но для ассоциативных списков это означает построение ещё одной копии списков.  Для Map вызовет построение ещё одной копии Map'ов (ну или какого-то гибрида -- например, построение ещё одной копии одного из Map'ов и какого-то хитрого merge при прогулке по второму Map'у).  Хочется использовать, по возможности, известное алгоритмам представление структур данных.
[21:28:45] ftrvxmtrx вошёл(а) в комнату
[21:31:47] <Kakadu> > Но для ассоциативных списков это означает построение ещё одной копии списков.
"это" --- это iter или super-merge?
[21:32:07] ftrvxmtrx вышел(а) из комнаты
[21:32:23] ftrvxmtrx вошёл(а) в комнату
[21:33:35] ftrvxmtrx вышел(а) из комнаты
[21:34:24] ftrvxmtrx вошёл(а) в комнату
[21:35:40] ftrvxmtrx вышел(а) из комнаты
[21:36:11] <gds> хм, а ведь моё слияние ассоциативных списков делается через построение массивов и слияния в них уже.  Это приемлемо, через iter я смогу (и буду, если остальное впишется) заполнять эти массивы.  Для Map -- случай хуже, там iter/fold не очень покатят, судя по прикидкам.  Однако я могу гнать аки лось (как все уже видели в ближайшие полчаса), не стесняйтесь.
[21:36:12] ftrvxmtrx вошёл(а) в комнату
[21:37:20] ftrvxmtrx вышел(а) из комнаты
[21:37:40] ftrvxmtrx вошёл(а) в комнату
[21:39:19] <gds> для Map хочется вызывать stdlib'овскую Map.(T).merge, вот в чём цимес.
[21:40:00] ftrvxmtrx вышел(а) из комнаты
[21:40:23] ftrvxmtrx вошёл(а) в комнату
[21:40:39] <Kakadu> я задумался  слиянии ассоциитивных списков и вспомнил о зипперах
[21:45:43] <gds> у меня в общем случае они неотсортированные (т.к. неизвестно, есть ли упорядочивание, а для списков и равенство вполне ок).  Слияние делаю через топологическую концепцию fibrations (расслоения) поверх массивов (те же O(N^2), но с небольшой, по прикидкам, константой).  А если уж сортировки у списков нет, то мало толку ходить зипперами по ним.  А сортировку добавить не могу.  Такая ботва.  Но "ассоциативные списки" для небольших размеров -- очень круто.  Для "карты сайта" (сегмент урла -> обработчик), например.
[21:47:33] <Kakadu> всё-таки про построение ещё одной копии не понял.....
[21:51:16] <gds> суть в том, что на текущий момент я пробую сделать _интерфейс_ к структурам данных (первые были отображения ключей в значения, мне они были нужны), и хочется использовать знание этих структур в общем случае.  Если алгоритм её знает -- пусть использует, иначе -- пусть скатывается в iter.
Так вот, если сделать всё через iter, все алгоритмы, несмотря на структуры данных, будут работать через этот iter, даже если есть более умные способы, например, через Map.Make(T).merge.
[21:53:42] <Kakadu> а хранить при объекте тег "из чего он сделан" и этот тег паттерн-матчить ---- слишком тупо?
[21:54:55] <Kakadu> хотя наверное тогда будут проблемы с тем чтобы спрятать этот метод... (вдруг private не подойдет?)
[21:56:56] ftrvxmtrx вышел(а) из комнаты
[21:57:32] ftrvxmtrx вошёл(а) в комнату
[21:59:16] <gds> нет, это очень даже умно, только для Map это не получается, там из-под функтора оно получается.  В общем, я сейчас перепишу это дело на first-class modules, ибо давно надо.  А то получаются те же "две проблемы одновременно" -- и нужда в first-class modules типа Eq, Cmp, Hsh (не гашиш!1111111) и их производных.
private подходит, и про "спрятать метод" -- видно, ты сталкивался с этим, радует :)
однако, в случае метода, например,
class map_rws_assoc ['k, 'v] = ...
  method merge : ('k -> option 'v -> option 'v -> option 'v) -> map_rws_assoc 'k 'v = fun userfunc othermap -> ...
  -- не очень-то получается чото вызвать приватный метод у othermap.  Это как бы понятно, такая объектная модель у нас тут, и даже в мануле описано (с обходами).
[22:02:13] <gds> с другой стороны, мне не обязательны классы вообще -- то есть, могу и не прятать методы.  нехай их будет хоть стопиццот.  главное, чтобы мой код (если он тупой и не смотрит на конкретные фичи конкретных мапок) не менялся при подстановке другой мапки.  туда тоже надо подумать.
[22:06:21] ftrvxmtrx вышел(а) из комнаты
[22:06:40] ftrvxmtrx вошёл(а) в комнату
[22:11:11] ftrvxmtrx вышел(а) из комнаты
[22:11:53] ftrvxmtrx вошёл(а) в комнату
[22:15:26] ftrvxmtrx вышел(а) из комнаты
[22:16:01] ftrvxmtrx вошёл(а) в комнату
[22:17:16] ftrvxmtrx вышел(а) из комнаты
[22:20:41] ftrvxmtrx вошёл(а) в комнату
[22:21:24] ftrvxmtrx вышел(а) из комнаты
[22:21:49] ftrvxmtrx вошёл(а) в комнату
[22:24:12] ftrvxmtrx вышел(а) из комнаты
[22:24:48] ftrvxmtrx вошёл(а) в комнату
[22:26:21] ftrvxmtrx вышел(а) из комнаты
[22:27:03] ftrvxmtrx вошёл(а) в комнату
[22:28:46] <ermine> Kakadu: как там lablqt? уже умеет создавать окошко?
[22:28:49] ftrvxmtrx вышел(а) из комнаты
[22:29:11] ftrvxmtrx вошёл(а) в комнату
[22:30:29] ftrvxmtrx вышел(а) из комнаты
[22:31:00] ftrvxmtrx вошёл(а) в комнату
[22:31:20] <ermine> мда, конфа летунов
[22:31:31] <ermine> gds: как жисть молодецкая?
[22:32:48] <Kakadu> я тута
[22:33:09] <Kakadu> ermine: http://oi55.tinypic.com/2hh3hwm.jpg
[22:35:32] <ermine> Kakadu: а меню?
[22:36:03] <gds> ermine: чотко, ровно, есть чему иметь мне моск, не скучно.  first-class modules почти асилил (с типизацией не могу разобраться в мелочах).  с работкой для камлоедов -- там, оказалось, мутновато, так как я не очень здорово справился с одной стороны, и в текущих условиях мало потребностей в камлокоде с другой стороны.
[22:36:13] <ermine> белое медицинское окошко - не гут
[22:37:25] ftrvxmtrx вышел(а) из комнаты
[22:37:32] <Kakadu> ermine: работает
[22:37:45] <ermine> а чего там не осиливать в f-c-m?
[22:37:49] ftrvxmtrx вошёл(а) в комнату
[22:38:02] <gds> ermine: типизацию11111
[22:38:26] <ermine> Kakadu: а нотепад?
[22:39:03] <ermine> точнее notebook
[22:39:11] <ermine> или коллекция окошек с табами
[22:39:55] <ermine> gds: переписал на f-c-m итераты?
[22:40:09] <gds> там они мало нужны сходу.
[22:40:50] <ermine> gds: и в качестве source по-прежнему array?
[22:43:02] <gds> ermine: ну да!  мне же никто не показывал результаты профайлинга!  особенно того, где альтернативой было бы представление в виде строк-либо-массивов, и функции переключались бы по результатам Obj.tag значения.
[22:45:07] <ermine> gds: простое копирование буфера сокета в array!
[22:45:20] <ermine> при каждом вызове read()!!!
[22:49:00] ftrvxmtrx вышел(а) из комнаты
[22:49:09] ftrvxmtrx вошёл(а) в комнату
[22:49:17] <gds> ermine: если в сишечьке сделать -- не особо проблема будет.  читаем в буфер фиксированного (большого) размера, дальше распихиваем.  ну да, копирование.  но будет ли это выгоднее, чем runtime dispatching между строками и массивами?
[22:49:59] <gds> а если ещё вспомнить полиморфизм, то точно, что не стоит отделять итераты "поверх строк" от итератов "поверх массивов".
[22:50:22] <gds> тот же компилятор/рантайм должен знать, к чему обращаемся.
[22:50:44] ftrvxmtrx вышел(а) из комнаты
[22:51:32] ftrvxmtrx вошёл(а) в комнату
[22:51:43] <ermine> в сишечке все строки готовые массивы
[22:51:52] <ermine> писать надо на сишечке
[22:53:57] <gds> ermine: благословляю тебя, ваимя и ваславу1
[22:54:23] <Kakadu> ermine: notebook в принципе вроде тоже можно сделать наверное
[22:57:28] <ermine> Kakadu: а в чом проблема?
[23:01:23] <Kakadu> я не знаю какой в кути за это виджет отвечает, и не могу сваять пример
[23:05:14] komar вошёл(а) в комнату
[23:17:27] ftrvxmtrx вышел(а) из комнаты
[23:18:26] ermine запорола гит сульци, перепутав бранчи и скачала заново с гитхуба репу
[23:18:30] <ermine> хы
[23:18:44] <ermine> может оно и к лучшему
[23:19:01] <gds> не пользуй #ит, в этом разгадка.
[23:19:09] ftrvxmtrx вошёл(а) в комнату
[23:19:47] <ermine> кстати, у меня щас мода переименовывания функций в либлах
[23:19:59] <ermine> щас закоммичу первую такую моду
[23:24:10] <ermine> таак, на сегодня хватит
[23:36:42] letrec вышел(а) из комнаты
[23:51:57] <gds> ermine: переименования -- в целом ок, посмотрел по трём (вроде бы) репкам.  И будущим светлым целям соответствуют -- например, прикольно иметь модули, умеющие of_string.  Хотя непонятно, нахрена, но, всё же, прикольно!
[23:55:23] <gds> (кстати вот нет, весьма таки понятно, нахрена, только редко нужно.)
[23:55:52] <Kakadu> ещё прикольнее иметь of_sexp
[23:56:01] <gds> вот это да.
[23:56:58] <gds> ermine: кстати, если тебе не нравится гит, то ты легко можешь использовать как всю мощь гитхаба, так и реальный меркуриал, используя расширение http://hg-git.github.com/
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!