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

GMT+4
[00:42:02] Typhon вошёл(а) в комнату
[01:10:40] Kakadu вышел(а) из комнаты
[02:50:32] Typhon вышел(а) из комнаты
[03:46:11] letrec вошёл(а) в комнату
[03:46:18] letrec вышел(а) из комнаты
[03:46:34] letrec вошёл(а) в комнату
[04:23:30] ftrvxmtrx вошёл(а) в комнату
[04:51:00] letrec вышел(а) из комнаты
[07:01:53] zert вошёл(а) в комнату
[08:15:23] gds вошёл(а) в комнату
[09:03:07] <gds> прочитал http://alaska-kamtchatka.blogspot.com/2011/09/yield-continue.html , частично асилил, но вопрос остаётся: зачем такая х-та (и схемота, чего уж) нужны на практике?  кто-нибудь юзал?  может, это чем-то лучше тупых stream'ов (а то и ленивых списков, смотря что надо), коими всякие елды (yield) эмулируются на отличненько?
[09:27:17] <gds> а знаете ли вы?  Hashtbl и ассоциативные списки умеют иметь несколько привязок для конкретного ключа, а Map не умеет.  У Hashtbl более общий интерфейс.  А та функция, которая Map.add, на самом деле должна называться Map.replace.
Как с этим быть в кадастре -- даже не знаю.  (напомню, цель -- generic interfaces к структурам данных, вплоть до того, чтобы их можно было менять друг на друга по нужде.)
Делить мапки на те, которые могут содержать несколько биндингов, и те, которые не могут, разве что?
Потому что эмулировать несколько биндингов через Map.t (list 'v) -- это значит и лишнюю память использовать (как минимум одно значение (cons cell) на каждую привязку), и выполнять добавление в виде последовательности M.find -> [v :: olds] -> M.add -- кривовато.
[10:46:43] <gds> какие есть форматы _представления_ регекспов посредством типичных протоколов сериализации, типа json/bson/sexpr/xml?  интересуют стандартные более-менее -- понятно, что так-то можно и самому придумать, но вдруг есть.  понятно, что в гугле по "json regexp" ищется совершенно не то, что нужно (а именно, ищется тупка про валидацию/парсинг).
[10:50:52] ermine вошёл(а) в комнату
[11:13:20] bobry вошёл(а) в комнату
[11:18:12] f[x] вышел(а) из комнаты
[11:20:24] f[x] вошёл(а) в комнату
[11:22:25] <f[x]> формат представления регекспа? строка!
[11:26:06] <gds> мне бы чуть более структурированным образом.  ибо эскейпинг всякий разный лень учитывать.
[11:26:35] <f[x]> какой такой эскейпинг?
[11:27:02] <f[x]> там же всё описано строго
[11:29:25] <gds> есть разные регекспы.  можно выбрать какой-то один их вид, конечно.  pcre какое-нибудь.  но даже в json предпочитал бы что-то типа
[ ["Str", "ab"], ["*", ["Str", "cd"]], [ "Str", "ef"], "Eol" ]
вместо /ab(cd)*ef$/
[11:49:45] Kakadu вошёл(а) в комнату
[12:14:37] klapaucius вошёл(а) в комнату
[12:41:09] komar вышел(а) из комнаты: Replaced by new connection
[12:41:10] komar вошёл(а) в комнату
[12:54:02] shaggie вошёл(а) в комнату
[13:07:28] bobry вышел(а) из комнаты
[13:18:43] bobry вошёл(а) в комнату
[13:30:59] Typhon вошёл(а) в комнату
[13:51:51] f[x] вышел(а) из комнаты
[14:41:05] bobry вышел(а) из комнаты
[16:28:49] letrec вошёл(а) в комнату
[16:33:03] f[x] вошёл(а) в комнату
[17:11:40] Kakadu вышел(а) из комнаты
[17:17:46] ftrvxmtrx вышел(а) из комнаты
[17:46:53] ad1862 вошёл(а) в комнату
[17:52:03] Kakadu вошёл(а) в комнату
[18:20:18] zert вышел(а) из комнаты
[19:14:10] <letrec> http://queue.acm.org/detail.cfm?id=2038036
[19:25:04] <Typhon> о, свежак, спасибо
[19:31:02] <Kakadu> а они там нарочно на ENTERы забили?
[19:33:18] <Typhon> может pdf  ult cnm?
[19:33:47] <Kakadu> pdf лучше, ага
[19:34:55] <Typhon> *там где-то есть
[19:36:50] ad1862 вышел(а) из комнаты: Replaced by new connection
[19:36:55] ad1862 вошёл(а) в комнату
[19:43:10] <Kakadu> > Jane Street’s core business is providing liquidity on the world’s electronic markets. It is, essentially, a middleman.
Кто английский хорошо знает?
[19:49:09] letrec вышел(а) из комнаты
[19:58:46] <f[x]> интересно, можно ли нарисовать патч который будет к каждому value цеплять какой-то type information (плюс одно поле в заголовке блока), но так чтобы рантайм и gc оставались без изменений
[20:05:05] ad1862 вышел(а) из комнаты
[20:29:39] <gds> ad1862: вопрос в приват дошёл, ответ отрицательный.  У меня это один из "фронтов" работы.
[20:30:31] <gds> f[x]: вопрос дошёл, ответ отрицательный.  слишком многие завязаны на это представление значений.  почему говорю -- потому что тоже было интересно, ещё как.
[20:32:53] <gds> f[x]: по типу weak hash tables цеплять -- уродство таки.
[20:33:57] <gds> даже в js_of_ocaml сохранили рантайм-представление.  уродство, конечно.
[20:35:33] <gds> или в каком-то другом трансляторе?  не помню сходу.
[20:40:21] <gds> кстати, это в том числе то, почему мне интересно было бы переопределить такие штуки, как создание литералов, иметь возможность переопределить let-in, ";".  можно было бы сделать edsl с добавочными правилами типизации, и из программы, написанной руками людскими, типовыводить и, при успехе, генерировать программу уже для компилятора.
[20:41:36] <f[x]> там сохранили рантайм представление чтобы можно было юзать без изменений с ванильным камлем
[20:42:11] <f[x]> а я насчёт того что рантайм представление меняется, на уровне abi, но по исходникам там должен быть эффект минимальный
[20:42:24] <f[x]> т.е. надо перекомпилировать камло и все библиотеки
[20:42:26] shaggie вышел(а) из комнаты
[20:43:11] <f[x]> и кстати, где там так сильно завязано на рантайм представление - если хидер блока увеличивается в размере - это одна константа ведь
[20:44:35] <f[x]> или скажем это может быть даже не хидер, а тело блока - плюс одно поле в конце, тогда gc вообще не меняется, а меняются "всего лишь" все вызовы caml_alloc
[20:44:45] f[x] на правах crazy ideas
[20:45:25] <f[x]> хотя на размер хидера могут асм куски рантайма быть завязаны - но их там в принципе не так уж много
[20:48:10] <gds> про "в конец" -- думал, ага :)  так дебилушки же периодически завязываются на размер блока.  Плюс к тому, [ None | Some 'a ] -- то он long, то value.  Боксить всё?  И каньпелятор хакать, где он паттерн-матчинг генерит?  В принципе, можно было бы все значения представлять как { v : value ; typeinfo : value }, и везде делать то создание записи, то разыменование x->v.  Это проще, но производительность теряется.
[21:07:46] <f[x]> учитывая что первое наперво применение - это generic print - то для "пустых" значений (None, [], etc) - не важно!
[21:08:13] <gds> [ A | B ] !1111  Да!  Так победим!
[21:08:24] <f[x]> злой ты
[21:09:30] Typhon вышел(а) из комнаты
[21:09:34] <gds> это от отчаяния.
[21:09:44] <f[x]> с другой стороны как только такое значение будет частью record'а, массива итп - тип его будет известен!
[21:09:45] <gds> смерть и сотона.
[21:10:15] <gds> да!  ref A!
[21:11:23] <f[x]> и это не контрпример
[21:11:23] <gds> вообще, генери идеи, ибо мучиться-думать-чесать не надо, и есть почти гарантия того, что я их быстро отсеку.
[21:11:37] <gds> а, вообще логично.
[21:11:42] <gds> ref None.
[21:11:54] <f[x]> см. п. 1
[21:12:08] <f[x]> пока он ref None - нам всё равно, а потом там ещё один бокс внутри
[21:12:41] <f[x]> не, ну я вижу что костыльненько получается, ради одного только generic print'а - много минусов
[21:12:51] <gds> вариант, надо подумать.
[21:13:44] <f[x]> а полного rtti не получается, и всякие возможные бонусы, как например comparison'ы привязанные к типам отпадают
[21:14:55] <gds> можно было бы попробовать сделать какую-нибудь привязку к -annot.
[21:15:06] f[x] afk
[21:47:32] ermine вышел(а) из комнаты
[22:47:03] shaggie вошёл(а) в комнату
[22:58:04] <Kakadu> bobry: не хочешь ещё раз cобрать lablqt?
[22:58:06] ftrvxmtrx вошёл(а) в комнату
[22:58:26] <Kakadu> я там прикрутил штуки специально для adrien'a
[22:58:43] <Kakadu> или его пнуть на выходных....
[23:02:22] <bobry> sure-sure
[23:03:55] <bobry> Kakadu: не напомнишь последовательность билда?
[23:04:04] <Kakadu> ocaml build.ml
[23:04:22] <bobry> oh, nice!
[23:04:43] <Kakadu> сейчас скажет файл не найден
[23:04:52] <Kakadu> ой, я долбаеб
[23:04:59] <bobry> сказал
[23:05:02] <bobry> шо делать?
[23:05:27] <Kakadu> ну наверное он в xml всё сбилдил
[23:05:39] <Kakadu> cd xmltool; make;
[23:06:01] <Kakadu> и там же 4test5
[23:06:06] <Kakadu> ./4test5
[23:06:34] <Kakadu> он должен создать for_test5.xml в корне
[23:06:53] <bobry> сделан
[23:07:06] <Kakadu> теперь build.ml будет нормально работать
[23:07:11] <Kakadu> (надеюсь)
[23:08:12] <bobry> QAbstractScrollArea.cpp:2:21: fatal error: headers.h: No such file or directory
compilation terminated.
QAbstractButton.cpp:2:21: fatal error: headers.h: No such file or directory
[23:08:18] <bobry> симлинк делать?
[23:08:26] <Kakadu> да
[23:08:34] <Kakadu> но интересно почему у меня такого нет....
[23:08:48] <Kakadu> ааа
[23:09:06] <Kakadu> хотя бред
[23:09:12] <Kakadu> гит должен был обновить
[23:10:25] <bobry> гит говорит up to date
[23:14:12] <Kakadu> я перечекаутил и он ничего не говорит про headers.h
[23:14:14] <Kakadu> странно
[23:14:45] <bobry> щас попробую новый клон
[23:15:14] <bobry> ocamlfind ocamlopt -g -thread -package dynlink,str,threads,unix,core,core_extended,tyxml,ocamlgraph,sexplib.syntax -syntax camlp4o -c parser.ml
File "parser.ml", line 1, characters 0-1:
Error: Could not find the .cmi file for interface parser.mli.
[23:15:35] <Kakadu> это где?
[23:15:44] <bobry> это ocaml build.ml
[23:15:49] <bobry> но после make в xml/ прошло
[23:16:11] <Kakadu> ппц
[23:16:18] <bobry> magic :)
[23:16:40] <bobry> на headers.h и вправду не ругнулся :)
[23:19:01] <bobry> make[1]: Entering directory `/tmp/lablqt/test_gen/test5'
Makefile:33: .depend: No such file or directory
make[1]: *** No rule to make target `.depend'.  Stop.
make[1]: Leaving directory `/tmp/lablqt/test_gen/test5'
make: *** [clean] Error 2
make: Leaving directory `/tmp/lablqt/test_gen'
Exception: Failure "error while building library".
[23:19:23] <Kakadu> ну про это я знаю
[23:19:36] <Kakadu> это самый интересный пример. Можно и руками скомпилить
[23:19:48] <Kakadu> и до меня так и не дошло почему он это пишет
[23:22:03] <Kakadu> странно
[23:22:53] <bobry> Kakadu: так а как проверить шо оно работает то?
[23:23:56] <Kakadu> ls test_gen/*.so что нибудь показывает?
[23:24:24] <bobry> dlllablqt.so
[23:24:32] <Kakadu> ну и отлично
[23:24:40] ad1862 вошёл(а) в комнату
[23:24:46] <Kakadu> cd test_gen/test5; touch .depend; make depend; make
[23:25:54] <bobry> make: *** No rule to make target `moc_UserSlots.o', needed by `main'.  Stop.
[23:26:20] <Kakadu> такое говорит когда make depend не сделан
[23:27:48] <gds> как отладите так, чтобы одной командой собиралось у обоих, свистите, тоже попробую.  раньше -- лень.
[23:28:54] <Kakadu> bobry: ?
[23:30:32] <bobry> In file included from ../headers.h:3:0,
                 from UserSlots.h:3,
                 from moc_UserSlots.cpp:10:
../ml_headers.h:7:27: fatal error: caml/mlvalues.h: No such file or directory
[23:32:09] Typhon вошёл(а) в комнату
[23:32:11] <Kakadu> а, ну понятно, что ещё надо сделать
[23:32:42] <Kakadu> это обычно в /usr/lib/ocaml/caml лежит
[23:34:19] <gds> э, если это у вас в конфигах прописано, что .h в /usr/lib/ocaml/caml лежат, то я повременю :)
[23:34:37] <bobry> да уж :)
[23:35:04] <Kakadu> у меня не прописано, я просто забыл это указать
[23:35:28] <Kakadu> видимо когда ставишь из репозитория камло совсем умное устанавливается)
[23:35:52] <Kakadu> gds: А ты падвендой?
[23:37:01] <ad1862> gds, я там в личке спрашвал, на парвеле сообщения между разными хостами передать можно ? а то я доки читал-читал и не понял что уже реализовано, ч то еще нет..
[23:37:51] <Kakadu> ad1862: [20:30:55] <gds> ad1862: вопрос в приват дошёл, ответ отрицательный.  У меня это один из "фронтов" работы.
[23:37:52] <gds> ad1862: не реализовано.  ответил в чятик чуть выше по тексту.  знаю, что хреново.  если очень нужно на окамле и срочно, стоит смотреть на jocaml.
[23:38:29] <ad1862> ясно
[23:39:33] <gds> Kakadu: я падвезде.  На текущих хостах у меня .h в /home/gds/dev/ovm/ocaml/lib/caml и в /home/bldr/src/ovm/ocaml/lib/caml, например.  Про компиляцию qt'шного падвендой я пока не буду даже думать, страшно.
[23:40:25] <Kakadu> gds: фуух, ну эту венду, да
[23:40:48] <Kakadu> а мне тут походу придется жрать кактус падвендой на фа-диезе
[23:46:05] <Kakadu> кажись bobry положил на канпеляцию
[23:46:15] <Kakadu> эх, ведь последний шаг оставался
[23:52:17] Typhon вышел(а) из комнаты: Replaced by new connection
[23:52:19] Typhon вошёл(а) в комнату
[23:52:29] <bobry> Kakadu: я просто нечеловек сегодня -- можно это до завтра отложить?
[23:52:37] <Kakadu> ага
[23:53:00] <Kakadu> нада допилить сборку, чтобы gds'a не расстраивать
[23:57:54] ad1862 вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!