Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 10 сентября 2009< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap
Конфигурация комнаты

GMT+4
[02:39:49] Typhon вышел(а) из комнаты
[04:55:14] john вышел(а) из комнаты
[04:56:13] john вошёл(а) в комнату
[08:13:46] sevenov вышел(а) из комнаты
[08:14:16] sevenov вошёл(а) в комнату
[09:32:52] Typhon вошёл(а) в комнату
[10:03:11] ygrek вошёл(а) в комнату
[10:25:04] sevenov вышел(а) из комнаты
[10:25:28] sevenov вошёл(а) в комнату
[10:26:00] sevenov вышел(а) из комнаты
[10:26:42] sevenov вошёл(а) в комнату
[10:50:44] ygrek вышел(а) из комнаты
[11:05:05] ygrek вошёл(а) в комнату
[12:42:09] ygrek вышел(а) из комнаты
[13:10:21] Typhon вышел(а) из комнаты
[13:26:08] ygrek вошёл(а) в комнату
[13:36:20] Typhon вошёл(а) в комнату
[13:55:58] sevenov вышел(а) из комнаты
[13:57:06] sevenov вошёл(а) в комнату
[14:49:26] ermine пытается пофиксить багу камлобилда извратами в плагине камлобилда - не получается
[14:50:21] <gds> чоза бага?
[14:51:55] <ermine> если я в плагине камлобилда на тэг вешаю добавление в список депендсов просто файл .ml - программа скомпилится в байткоде и нейтивкоде
[14:52:22] <ermine> если этот добавляемый файл сам имеет в депендсах .mly, то такая программа скомпилится только в нейтивкоде
[14:52:38] <ermine> в байткоде никто не хочет скомпилить .mly, только .cmi появляется
[14:53:29] <ermine> сейчас пытаюсь явно указать этот депендс вида
flag_and_dep ["ocaml"; "link"; "byte"; "fi;e:plugin_calc.cmo"] &
S[P "icalc.cmo"];
[14:53:57] <ermine> где icalc.cmo образуется из icalc.mly, но это как припарка трупу помогает
[14:54:03] <gds> может отрепортить багу стоит?
или расследовать посредством какого-нибудь уровня отладочной печати?
[14:54:25] <ermine> да сначала б понять пчу такое поведение
[14:54:51] <ermine> где-то в solver упущение
[14:55:29] <ermine> оно компилится если явно прописать депендс в первом прописывании плагинов
[14:56:42] <ermine> и уж совсем непонятно почему не лечится плагиноа камлобилда
[14:57:27] <gds> отладочную печать может поставить? -verbose 10 вроде советовали.
[15:04:17] <ermine> в .depends нужный файл появляется
[15:06:28] <ermine> и в логе с verbose он в списке депендсов также есть
[15:09:33] <ermine> в списке депендсов-то есть, а в строке компиляции не появляется
[15:11:12] <ermine> без бутылки яда не разобраться
[15:51:42] ygrek вышел(а) из комнаты
[15:56:23] <ermine> ухищрениями заменила ошибку с global reference на просто file not found, га-га
[16:02:25] ermine заодно поняла, как создавать тэги
[16:02:47] <ermine> tag_any ["use_calc"];
flag ["ocaml"; "compile"; "byte"; "use_calc"] &
S [ P "icalc.cmo"];
flag ["ocaml"; "complile"; "byte"; "file:plugin_calc.cmo"] &
T (tags_of_pathname "ocaml" ++ "compile" ++ "byte" ++ "use_calc");
flag ["ocaml"; "link"; "byte"; "use_calc"] &
S [ P "icalc.cmo"];
flag ["ocaml"; "link"; "byte"; "file:plugin_calc.cmo"] &
T (tags_of_pathname "ocaml" ++ "link" ++ "byte" ++ "use_calc");

[16:03:02] <ermine> здесь link работает, в отличие от compile
[16:04:31] <ermine> замена flag на flag_and_dep не помогает
[16:25:42] <gds> кто-нибудь в лексерах вручную меняет lexbuf.lex_{start,curr}_p?
случай с лексингом директив вида "#line" я понимаю, а ещё?
лучше сразу сознавайтесь!
[16:27:26] <ermine> надо будет попробовать mpack
[16:29:53] <ermine> gds: это тоже извращение, пиши сразу интерпретатор бейсика с GOTO
[16:30:59] <gds> ermine: ты вообще о чём?
[16:32:07] <ermine> gds: ты ж хочешь передвигаться по файлу? :)
[16:32:39] <gds> по сущности, заданной посредством lexbuf.
[16:38:56] <ermine> чёрт
[16:39:05] <ermine> с mlpack оно скомпилилось
[16:41:53] f[x] вышел(а) из комнаты
[16:49:12] f[x] вошёл(а) в комнату
[17:42:04] <gds> слегка оффтопик, но может кто подскажет. Как бы умным образом оформить итерацию по числам с заданным количеством битов? Например, 000111, 001011, 001101, 001110, 010110... Желательно с функцией, которая по предыдущему числу выдаёт следующее. Было что-то такое классическое, вроде.
[18:00:27] <ermine> стрим.оф_фунц
[18:00:47] <gds> оф какая фунц?
[18:01:06] <ermine> а она одна там такая
[18:01:29] <ermine> в ней можно рожать чо хочешь
[18:02:45] <ermine> вообще на мой взгляд Stream - прекрасный итератор, когда не зватает имплементации диапазонов и/или с шагом
[18:02:59] <gds> вопрос был не в том, как оформить это в stream.
[18:03:10] <ermine> хотя можно и без стримов, обычная рекурсия
[18:04:30] <ermine> ну нинаю, суешь в итератор маску битов
[18:04:43] <ermine> а дальше хоть потоп
[18:05:47] <gds> угу, это понятно. Думаю, как же этот потоп устроить.
[18:07:10] <ermine> а как посчитать число битов в числе?
[18:07:14] <ermine> которые единички
[18:07:44] <ermine> двигать влево на один бит и ловить единички?
[18:07:57] <ermine> вправо то бишь
[18:10:15] <gds> посчитать биты -- это мы можем. Прибавить единичку, сверить битность, и так далее. Просто вроде была более умная штука для того, чтобы по подобным последовательностям ходить. Но я не уверен, была или нет, а если и была, то я её забыл.
[18:11:09] <gds> у меня всего лишь 12-битные числа, так что можно их заранее рассувать в массивы согласно битностям, но некошерно.
[18:13:21] <ermine> зачем массивы, можно сразу в список и фолдить :)
[18:13:37] <ermine> но я про сдвиг вправо
[18:14:24] <ermine> можно и со сдвигом влево
[18:14:31] <ermine> тот же фолд
[18:14:41] <ermine> но не списка
[18:17:00] <gds> можно, конечно. но мне понадобится операция "клонировать итератор", что не очень хорошо решается средствами чисто фолдов или чисто stream'ов.
[18:18:29] <ermine> ну это имхо двойной итератор
[18:21:27] <gds> не понял.
мне, условно, нужно перебрать пары чисел i и j, имеющие одинаковое количество бит, но ненужные варианты отсеиваются, если положить i<j.
поэтому думал внутри итерации по i получать итератор по j как-то так:
j_iter = clone i_iter; (* тут: i=j *)
junk j_iter; (* тут: i<j *)
[18:22:02] <gds> если бы была умная функция, по числу возвращающая следующее число с таким же количеством битов, было бы круто. А так -- извращаться только.
[18:24:53] <ermine> я имела в виду, что первый итератор ищет нужные штуки, а второй итератор испускает их в код
[18:25:35] ermine сейчас глубоко закопана в свою сульцю и возможно сейчас неадекватно мыслит про биты
[18:26:52] <gds> а я продолжаю ocamllex приучать к utf8, уже практически "иду к успеху", а биты -- чисто "сайд-проект", фоновые размышления.
[18:27:45] <ermine> аааа, вот что за биты
[18:28:37] <gds> не, не связано. биты -- хочу начитить в одной логической задачке.
[18:30:36] <ermine> может и утф8 в ocamlex гуд, но он ulex не заменит
[18:31:04] <ermine> в ulex помимо самого утфа есть таблицы определений диапазонов согласно xml
[18:31:58] <gds> согласен полностью. но следить за номерами строк сходу не вышло.
[18:33:57] <ermine> на самом деле в ocamllex не помешалы бы классы из самой уникоды
[18:34:40] <gds> ocamllex делали для байтов, а не для символов, а подобные вопросы (уникод) -- это означает "выкинуть ocamllex, взять ulex".
[18:46:13] f[x] вышел(а) из комнаты
[18:52:27] inky-kinky вошёл(а) в комнату
[18:54:06] ermine вышел(а) из комнаты
[19:00:47] Typhon вышел(а) из комнаты
[19:17:04] john вышел(а) из комнаты: Replaced by new connection
[19:17:05] john вошёл(а) в комнату
[19:27:00] sceptic вышел(а) из комнаты
[19:30:13] sceptic вошёл(а) в комнату
[19:42:57] inky-kinky вышел(а) из комнаты
[19:43:39] inky-kinky вошёл(а) в комнату
[19:43:54] inky-kinky вышел(а) из комнаты
[19:47:23] ermine вошёл(а) в комнату
[19:47:25] ermine вышел(а) из комнаты
[19:47:46] ermine вошёл(а) в комнату
[19:55:01] <ermine> gds: а нафига тогда utf-8 в ocamllex? вон ulex на вход брал уникоду
[19:57:59] <gds> мне вот нравится, что с utf-8 можно работать как с обычными строками, если операции состоят из ввода-вывода, склеивания и строгого сравнения строк. То есть, внутрь лазить не буду, а для остального и ocamllex хватит. Более того, ocamllex уже позволяет работать подобным образом с utf-8, за исключением раздражающей мелочи -- работы с позициями токенов.
То есть, такой ulex для инвалидов, но умеющий штатным образом следить за позицией токена в строках.
[19:59:30] <gds> отговаривать надо было примерно в прошлые выходные :) Уже реализовал. Натрахался вдоволь. Теперь привожу в человеческий вид, и неизбежно release crap.
[20:01:14] <gds> хочу в библиотеке лочить структурку мутексом, но не хочу вносить зависимость от threads. В качестве варианта -- иметь top-level reference, в которой будут заглушки по умолчанию, но куда можно будет перед работой с модулем сделать
Mylib.init_locking Mutex.create Mutex.lock Mutex.unlock
естественно, с проверкой того, чтобы это делалось ровно один раз.
вроде метод нормальный. Или есть возражения/предложения?
[21:45:58] ygrek вошёл(а) в комнату
[21:48:14] <ygrek> gds: ага, так в ocamlnet делается
[21:48:42] <ygrek> только надо не забывать инициализировать (подключать нужный .cmo)
[21:49:03] <ygrek> через ocamlfind достигается автоматизация
[21:53:09] inky-kinky вошёл(а) в комнату
[21:58:09] inky-kinky вышел(а) из комнаты
[21:59:24] inky-kinky вошёл(а) в комнату
[22:04:27] <ygrek> что-то я обдумываю ответ про threads и понимаю что сам не понимаю что хотел спросить. Видимо лучше внимательно изучить сгенерированный код..
[22:23:54] ermine обдумывает, пчу сульцин тред не работает, когда он (сульци) форкнутый
[22:24:41] <ygrek> после форка остаётся только тред который форкался?
[22:24:58] <ygrek> > You could do this:
> type record = { id : int; data : 'a . 'a }
> The only minor problem is that you can't create values of such type :-)
:)
[22:25:06] <ermine> ага, если в конфиге отключить даемонизацию, тред работает
[22:25:28] <ygrek> форкайся до запуска треда
[22:25:51] <ermine> не знаю что там остается, просто нетклиент у меня засунут в тред, и тред запускается после форка
[22:26:42] <ygrek> ещё недавно видел в архивах рассылки про INRIA people --
"Yes, this works in practice.. but does it work in theory?"
[22:26:55] <ermine> хотя может вру
[22:27:01] <ermine> щас проверю что там раньше
[22:27:37] <ermine> таки вру, тред запускается до форка
[22:27:45] <ermine> ygrek: спасибо за прояснение
[22:28:42] <ermine> а фраза замечательная
[22:35:52] <gds> > The only minor problem is that you can't create values of such type :-)
но именно так и делают, когда хотят полиморфные исключения. плюс Obj таки.
[22:36:09] <ygrek> caml такой caml
[22:45:58] <gds> если к окамлу относиться как к си, к которому приделали GC, расширили enum'ы до вариантов обоих видов, добавили объекты, исключения, модули и нормальную типизацию, то воспринимать его становится как-то легче. Ну и работать с ним, ясное дело.
[22:46:28] <gds> а насчёт блокировок мутексом -- так и сделаю. мне такой метод по душе.
[22:46:49] gds вышел(а) из комнаты
[23:11:20] sceptic вышел(а) из комнаты
[23:13:45] sceptic вошёл(а) в комнату
[23:51:48] ygrek вышел(а) из комнаты
[23:53:12] abiogenesis вошёл(а) в комнату
[23:53:23] <abiogenesis> кто-нибудь пользовался OCamlMakefile?
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!