Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 2 ноября 2010< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+3
[00:08:37] Kakadu вошёл(а) в комнату
[00:27:50] arhibot вышел(а) из комнаты: Replaced by new connection
[00:27:51] arhibot вошёл(а) в комнату
[00:28:45] arhibot вышел(а) из комнаты
[00:45:36] zert вышел(а) из комнаты
[00:46:15] Kakadu вышел(а) из комнаты
[00:57:58] ermine вышел(а) из комнаты
[02:20:48] myxomop87 вошёл(а) в комнату
[03:32:32] myxomop87 вышел(а) из комнаты
[04:23:51] Typhon вышел(а) из комнаты
[06:13:20] f[x] вышел(а) из комнаты
[06:16:27] f[x] вошёл(а) в комнату
[06:57:28] f[x] вышел(а) из комнаты
[07:37:01] iNode вошёл(а) в комнату
[07:48:44] f[x] вошёл(а) в комнату
[07:57:01] f[x] вышел(а) из комнаты
[08:10:37] f[x] вошёл(а) в комнату
[08:55:55] gds вошёл(а) в комнату
[09:04:47] aloner2k вошёл(а) в комнату
[10:03:47] f[x] вышел(а) из комнаты
[10:07:09] f[x] вошёл(а) в комнату
[10:19:43] Mon вышел(а) из комнаты: Replaced by new connection
[10:19:45] Mon вошёл(а) в комнату
[10:19:56] Mon вышел(а) из комнаты: Replaced by new connection
[10:20:05] Mon вошёл(а) в комнату
[10:20:12] komar вышел(а) из комнаты
[11:00:11] ermine вошёл(а) в комнату
[11:09:58] Typhon вошёл(а) в комнату
[11:21:33] Kakadu вошёл(а) в комнату
[11:22:07] Kakadu вышел(а) из комнаты
[11:22:46] myxomop87 вошёл(а) в комнату
[11:23:14] Kakadu вошёл(а) в комнату
[11:30:21] <gds> f[x]: у тебя где-то был простейший эталонный Makefile для библиотек -- clean, install, uninstall/remove, вроде.  Подскажешь, в каком публичном проекте оно есть?  (можно и не простейший, лишнее уберу.)
[11:41:31] komar вошёл(а) в комнату
[11:43:27] <komar> gds: http://komar.bitcheese.net/darcs/memcache-ocaml/Makefile — если убрать tests, то будет эталонно, наверное. Файлы добавляются в FILES
[11:48:20] <gds> komar: минус в наличии юниксовых команд (sed, rm, mkdir).  Мне-то оно подойдёт, но не кроссплатформенно.  Буду думать; если ничего не придумается, возьму однозначно.
[11:48:42] <komar> ocamlmakefile пробовал? Там, наверное, продуманно все.
[11:48:56] <komar> Я просто не люблю все эти билдсистемы, они все умнее меня.
[11:49:23] <gds> ocamlmakefile не хочу, я замучаюсь его отлаживать в случае чего.
[11:49:36] <gds> а "случай чего", к удивлению, встречается нередко.
[11:55:51] arhibot вошёл(а) в комнату
[11:58:12] <f[x]> ocamlmakefile тоже sed shell итп
[11:58:16] <f[x]> gds: бери oasis
[12:00:51] <gds> f[x]: пока нет нужды, нужно сильно более тупое.  "вкладываться в инфраструктуру" пока не хочу, и так много потратил на это.  У тебя был тупой makefile, не ocamlmakefile, но вызывающий ocamlbuild, вот его охота.
[12:02:04] <f[x]> вот как раз с oasis'ом на инфраструктуру уходит сильно меньше времени, там более если ты уже юзаешь ocamlbuild
[12:02:29] f[x] во всех новых проектах использует oasis
[12:03:22] <gds> мне будет нужно найти oasis/mingw, компилять, инсталлировать и всё такое.
[12:03:34] <gds> а задачи у меня простые.
[12:03:45] <gds> впрочем, забьём.
[12:04:45] <Typhon> "а задачи у меня простые." написать высокоуровневый язык с произвольно изменяемой грамматткой, компилирующийся в js и с ^___^
[12:05:35] <gds> :))  не, тут другая задачка параллельно -- ocaml-iteratees долепить.  Тем более, оно и для языка пригодится.
[12:08:29] aloner2k вышел(а) из комнаты
[12:18:47] komar вышел(а) из комнаты
[12:29:40] <f[x]> oasis в бинарнике есть
[12:32:38] <f[x]> gds: http://paste.in.ua/1316/
[12:33:19] <f[x]> только для cmxa лучше отдельную opt target иначе byte-only-архитектуры будут тебя ненавидеть
[12:33:39] <f[x]> ну и oasis на самом деле лучше
[12:34:30] <gds> f[x]: ага, про бинарник понял, Makefile посмотрел, замечательно.
[12:57:28] komar вошёл(а) в комнату
[13:00:17] <gds> Error: Wrong file naming: C:/OVerbld/ocaml/lib/site-lib/lwt\lwt_IO.cmi contains the compiled interface for Lwt_io
bash-3.1$ ls lwt_io.cmi
lwt_io.cmi
странно.
[13:01:21] <Kakadu> IO vs. io ?
[13:05:22] arhibot вышел(а) из комнаты
[13:29:51] Mon вышел(а) из комнаты
[13:32:41] <gds> да, дело в этом.  Просто меня удивило, что эта ошибка (про неправильный .cmi) вызывается в случае, когда пытался работать с модулем "Lwt_IO" в своей программе.  (понятно, что имя модуля неправильное, но ошибка явно не в .cmi.)
Впрочем, виндовая ошибка, на которую ушло меньше 10 минут чистого времени, это скорее удача.
[13:51:02] f[x] вышел(а) из комнаты
[13:52:34] f[x] вошёл(а) в комнату
[13:54:30] <gds> а вот ещё интересно.  Если Lwt_main.run дёргать периодически (имеем 'a Lwt.t, дёргаем, вычисляем 'a, повторяем) -- это в целом нормально?  Ничего криминального?
[13:55:12] <komar> Только унутрь монады его не пхай.
[13:57:13] <gds> "Successive invocations of run are serialized: an invocation of run will not terminate before all subsequent invocations are terminated."
Хотя по-любому не буду его внутрь.
[14:12:03] zert вошёл(а) в комнату
[14:16:20] komar вышел(а) из комнаты: Replaced by new connection
[14:16:21] komar вошёл(а) в комнату
[14:42:05] Mon вошёл(а) в комнату
[14:48:03] arhibot вошёл(а) в комнату
[15:00:50] arhibot вышел(а) из комнаты
[15:27:37] <gds> интересненько.  через Lwt_io.open_file ~mode:Lwt_io.input fn открываю файл, с помощью Lwt_io.read_into пытаюсь читать, а оно мне "Failure("Unknown handle")".  Буду копать.
[15:29:40] <Typhon> опять, наверное, в винодвсе всё поломали :(
[15:29:55] <gds> или я накосячил.
[15:34:20] <gds> вот замечательно, это failure -- из ocaml sources /otherlibs/win32unix/select.c.
[15:37:27] <gds> что интересно, есть два теста, которые по отдельности не вызывают багу, а при последовательном запуске -- второй тест фейлится с такой вот гадостью.
[15:37:57] <Typhon> в первом тесте дескрипторы может не закрываются?
[15:39:12] <Typhon> кстате, я не понял, почему select, а не libev ( http://ocsigen.org/lwt/sources/?to=20101025224148-c41ad-0d489ef95ab75f30aada37fda98284ec59015611.gz&version=20101022235744-c41ad-50d8d1b6a131fe5b7cde74e37945a8cedcde3855.gz&view=patchdiff )
[15:39:13] <gds> может.  но их там немного, и незакрытие дескриптора по идее не повод для ошибки.
[16:46:20] komar вышел(а) из комнаты
[17:19:19] komar вошёл(а) в комнату
[17:19:37] <komar> Как сделать fprint для дебага нормально?
[17:20:10] <gds> сформулируй требования "нормально".
[17:20:56] <komar> Мне надо а-ля let debug fname x = if !debug_enabled then Printf.printf (fname ^^ ": " ^^ x ^^ "\n"), но у этого какие-то непонятные для меня проблемы с типизацией.
[17:22:02] <komar> В дальнейшем внутри функции делаю let debug f = debug "function_name" f, но у этой функции потом фиксированное число аргументов.
[17:22:44] <komar> Ну, в смысле, ну вы поняли. У чего-то ничего понять не могу.
[17:24:15] <komar> «Фиксированное число аргументов» — это когда на let () = debug "found exit on %Lx" addr после let () = debug "end of trace" компилятор жалуется, что This function is applied to too many arguments.
[17:25:35] <gds> если это та самая проблема, попробуй эта-экспансию везде где можно, начиная с первой функции.  т.е. let debug fname x fmt = ... "\n") fmt;;
[17:29:05] arhibot вошёл(а) в комнату
[17:34:01] gds вышел(а) из комнаты
[17:36:39] iNode вышел(а) из комнаты
[17:40:14] serp256 вошёл(а) в комнату
[17:41:03] <komar> Ничего не понял, не помогло.
[17:42:03] <komar> В желаемом виде выглядит так:
let debug_enabled = ref true
let debug fname x = if !debug_enabled then Printf.printf (fname ^^ ": " ^^ x ^^ "\n")
let f =
  let debug = debug "f" in
  let () = debug "hello" in
  let () = debug "hex: %Lx" 666 in
  ();
[18:06:07] <f[x]> ну имхо если в рантайме то вариант только с ksprintf - т.е. строка вся создаётся
[18:07:45] <f[x]> или гоню
[18:07:48] <f[x]> let p fmt = (if !debug then Printf.fprintf stdout else Printf.ifprintf stdout) fmt;;
[18:08:29] <f[x]> хм, а почему же я это сам не использую?
[18:13:44] Mon вышел(а) из комнаты
[18:21:59] <komar> О, заработало.
[18:22:02] <komar> Спасибо.
[18:28:01] gds вошёл(а) в комнату
[18:31:23] Mon вошёл(а) в комнату
[18:31:39] Mon вышел(а) из комнаты
[18:33:03] Mon вошёл(а) в комнату
[18:33:03] Mon вышел(а) из комнаты: offline
[18:34:00] ermine вышел(а) из комнаты
[18:34:23] ermine вошёл(а) в комнату
[18:50:04] arhibot вышел(а) из комнаты
[19:02:42] Typhon вышел(а) из комнаты
[19:08:57] <ermine> а можно ли скрещивать ocsigen и camltemplate?
[19:09:13] <komar> Разрешаю.
[19:09:20] <komar> Потом мне покажешь?
[19:09:26] <ermine> а сам не пробовал?
[19:09:31] <komar> Не-а.
[19:09:45] <komar> Но думаю об этом, засыпая по ночам.
[19:09:47] <ermine> брать готовый хтмл, в который требуется форму засунуть
[19:10:23] <ermine> а еще я почти сделал капчу таки
[19:10:46] ermine ушла колдовать дальше
[19:25:27] serp256 вышел(а) из комнаты
[19:41:13] <ermine> в camltemplate все сувать в хэштаблицу надо
[19:42:00] <ermine> неудобно для форм
[19:57:40] Kakadu вышел(а) из комнаты
[20:35:15] <gds> кстати да, хеш-таблица -- дебилизм со стороны camltemplate
[20:43:53] Kakadu вошёл(а) в комнату
[20:44:03] <ermine> gds: с другой стороны это как бы само собой напрашивается для темплейтов
[20:44:20] <ermine> жевать темплейт и вытаскивать подстроки из хэша
[20:45:10] <gds> ну да, hash или map.  Они затачивались наверное на хеш, чтобы менять можно было.  Но я бы на их месте нарожал бы разных функций типа of_list, of_map, ..
[20:56:56] Kakadu вышел(а) из комнаты
[21:03:48] ygrek вошёл(а) в комнату
[21:07:11] <komar> О, журналы перекочевали в саенс_фрикс.
[21:20:34] ygrek вышел(а) из комнаты
[21:20:35] ygrek вошёл(а) в комнату
[21:53:24] ygrek вышел(а) из комнаты
[21:53:28] ygrek вошёл(а) в комнату
[21:59:29] arhibot вошёл(а) в комнату
[22:16:52] arhibot вышел(а) из комнаты
[22:18:01] Kakadu вошёл(а) в комнату
[22:38:11] serp256 вошёл(а) в комнату
[22:58:41] myxomop87 вышел(а) из комнаты
[23:12:08] Typhon вошёл(а) в комнату
[23:15:36] myxomop87 вошёл(а) в комнату
[23:38:29] ygrek вышел(а) из комнаты
[23:48:14] arhibot вошёл(а) в комнату
[23:52:24] arhibot вышел(а) из комнаты
[23:52:28] arhibot вошёл(а) в комнату
[23:53:16] gds вышел(а) из комнаты
[23:55:18] arhibot вышел(а) из комнаты
[23:55:20] arhibot вошёл(а) в комнату
[23:56:28] arhibot вышел(а) из комнаты: Replaced by new connection
[23:56:30] arhibot вошёл(а) в комнату
[23:57:17] serp256 вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!