Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 4 ноября 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:06:46] arhibot вышел(а) из комнаты
[00:11:57] arhibot вошёл(а) в комнату
[00:12:22] arhibot вышел(а) из комнаты
[00:55:54] zert вышел(а) из комнаты
[01:50:27] Typhon вошёл(а) в комнату
[03:30:06] Typhon вышел(а) из комнаты
[08:19:42] serp256 вошёл(а) в комнату
[08:25:35] serp256 вышел(а) из комнаты
[08:48:14] Kakadu вошёл(а) в комнату
[08:48:19] Kakadu вышел(а) из комнаты
[09:19:20] Kakadu вошёл(а) в комнату
[09:53:59] SerP вошёл(а) в комнату
[10:44:36] myxomop87 вошёл(а) в комнату
[11:19:17] iNode вышел(а) из комнаты
[11:19:23] iNode вошёл(а) в комнату
[11:25:28] <f[x]> хм, ocamlnet не собирается на 3.10.2
[11:44:09] gds вошёл(а) в комнату
[12:06:11] <Kakadu> в 3.11.2 можно открыть модуль внутри замыкания?
[12:08:42] <Kakadu> хотя ладно, конфлик имен я решил хаком
[12:11:34] arhibot вошёл(а) в комнату
[12:32:53] ermine вошёл(а) в комнату
[12:40:22] komar вошёл(а) в комнату
[12:50:27] <gds> > в 3.11.2 можно открыть модуль внутри замыкания?
(fun x ->
let module Q = struct
open Your_module;
value closure_result = your_expression;
end
in
Q.closure_result
)
по идее будет работать.
[12:53:49] <Kakadu> gds: понятно, спасибо
[12:54:24] Kakadu вышел(а) из комнаты
[12:54:39] Kakadu вошёл(а) в комнату
[13:08:45] Kakadu вышел(а) из комнаты
[13:09:31] Kakadu вошёл(а) в комнату
[13:09:42] Kakadu вышел(а) из комнаты
[13:21:24] Kakadu вошёл(а) в комнату
[13:21:27] <Kakadu> test
[13:21:31] <Kakadu> а как можно красиво написать вот такое?
incr depth;
let res = ... in
decr depth;
res
[13:21:44] <Kakadu> во, теперь отправляются сообщения)
[13:22:19] <Kakadu> монады какие-нибудь?
[13:23:01] arhibot вышел(а) из комнаты: Replaced by new connection
[13:23:02] arhibot вошёл(а) в комнату
[13:23:17] <ʇsʎɯ> использовать (depth - 1) в ... ?
[13:23:29] <ʇsʎɯ> или (depth + 1)
[13:24:08] arhibot вышел(а) из комнаты: Replaced by new connection
[13:24:09] arhibot вошёл(а) в комнату
[13:24:25] <Kakadu> можно, но хочется покороче как-нить
[13:24:42] <Kakadu> хотя может я мудрю
[13:25:15] <ʇsʎɯ> мудришь
[13:26:08] <ʇsʎɯ> let depth1 = depth + 1 in ...
[13:26:10] <ʇsʎɯ> например
[13:26:16] <ʇsʎɯ> и пользоваться depth1
[13:26:22] arhibot вышел(а) из комнаты
[13:26:28] arhibot вошёл(а) в комнату
[13:27:50] <gds> поддерживаю про создание новой привязки с новым иммутабельным значением.
впрочем, если в let res = ... много кода, и весь должен использовать новый depth, можно сделать
let old_depth = depth
let depth = old_depth + 1
let res = ...
let depth = old_depth (* вернули привязку взад *)
[13:29:48] <ʇsʎɯ> зачем старое возвращаться?
[13:30:03] <gds> вдруг там код, который старое пользует.
[13:30:11] <ʇsʎɯ> let d1 = depth + 1 in (* код для depth но юзающий d1 *) ...
[13:30:19] <ʇsʎɯ> ну так поменять его
[13:31:05] <gds> или же манипуляции с видимостью можно сделать почти без ручной работы:
let depth = начальное
module Q = struct
let depth = depth + 1
let res = ...
end
(* тут depth как было, так и есть старое *)
let res = Q.res
[13:31:06] <Kakadu> может чтонить вроде
let depth = ref 0;;
...
let wrapper arg = if !depth > 500 then default_val else  (incr depth; let res = Lazy.force arg; decr depth; res)
let func = function
| ....... -> wrapper (lazy (....))
[13:31:35] <ʇsʎɯ> нда...
[13:31:44] <ʇsʎɯ> и эти люди запрещали мен пользоваться мондами
[13:33:55] <Kakadu> кто запрещал?
[13:35:40] Kakadu вышел(а) из комнаты
[13:35:46] Kakadu вошёл(а) в комнату
[13:37:40] <Kakadu> так это надо с монадами писать или нет?
[13:38:58] <ʇsʎɯ> Kakadu, пятница завтра, сириосли
[13:39:05] <ʇsʎɯ> я вроде нормально дал ответ
[13:39:57] <Kakadu> а к чему огда фраза "и эти люди запрещали мен пользоваться мондами" ?
[13:40:36] <ʇsʎɯ> к этим вашим сумасшествиям как сделать простейшую вещь
[13:42:28] f[x] предлагает хранить depth в transactional acid db, иначе несекурно
[13:43:05] <Kakadu> f[x]: несекурнос точки зрения многопоточности или чего?
[13:45:00] <f[x]> не воспринимай всё так серьёзно :)
[13:45:28] <Kakadu> тогда надо таличку *сарказм* иногда показывать)))
[13:46:01] <f[x]> кстати да, одна db это spof, нужен HA кластер
[13:47:28] <f[x]> я лучше буду показывать табличку *несарказм* :)
[14:20:53] <ermine> хых, в lwt появился mmap
[14:21:08] <ermine> скоро lwt станет эдакой единой батарейкой
[14:21:22] <Kakadu> а что такое mmap?
[14:21:50] <Kakadu> просто я про lwt знаю только расшифровку)
[14:22:08] <ermine> мап файла в память
[14:22:28] <komar> Отлично!
[14:31:14] arhibot вышел(а) из комнаты
[14:31:18] arhibot вошёл(а) в комнату
[14:37:13] abiogenesis вошёл(а) в комнату
[14:54:48] <f[x]> "типа асинхронный"
[15:20:21] <ermine> асихронная батарейка
[15:51:25] Typhon вошёл(а) в комнату
[15:57:44] abiogenesis вышел(а) из комнаты
[16:05:35] Typhon вышел(а) из комнаты
[16:05:51] Typhon вошёл(а) в комнату
[18:18:52] ʇsʎɯ вышел(а) из комнаты
[18:19:36] ʇsʎɯ вошёл(а) в комнату
[19:03:23] zert вошёл(а) в комнату
[19:29:33] SerP вышел(а) из комнаты
[20:41:23] ʇsʎɯ вышел(а) из комнаты
[20:56:08] arhibot вышел(а) из комнаты: Replaced by new connection
[20:56:09] arhibot вошёл(а) в комнату
[21:45:42] zert вышел(а) из комнаты
[22:08:05] <ermine> если библиотечная функция сохраняет свое г-но в out_channel, а мне надо - в строку, то как решить эту проблему?
[22:08:34] <ermine> gds: есть гениальные идеи?
[22:08:49] <ermine> как сделать канал из строки?
[22:10:08] <gds> ermine: тебе тупое или правильное?
[22:10:27] <ermine> gds: оба!
[22:10:42] <ermine> тупое - это наверное через временный файл
[22:10:50] <gds> ermine: тупое -- как в батарейках -- писать во временный файл, который открыть, прочитать в строку, закрыть и удолить.
[22:11:01] <gds> правильное -- изнасиловать библиотеку.
[22:11:19] <komar> Нет, правильный способ — изнасиловать разработчика.
[22:11:22] <gds> но строка может быть больше 16мб, что на 32-битных архитектурах смерти подобно.
[22:11:38] <komar> Есть же (string -> unit), епта.
[22:11:52] <ermine> не, насиловать camlimages я не собираюсь
[22:11:57] Kakadu вышел(а) из комнаты
[22:12:38] <ermine> и не факт, что я из-за mli получу доступ к internal функциям, которые трогают канал
[22:13:45] <ermine> ага, нету доступа
[22:13:48] <ermine> хныг
[22:17:40] komar вышел(а) из комнаты
[22:27:29] ygrek вошёл(а) в комнату
[22:44:14] <ygrek> вот если бы все юзали extlib.IO было бы счастье
[22:44:32] <ygrek> но вы же против dependecy "лишних", так что кушайте
[22:45:05] ygrek таскает с собой патченные для IO camlzip и streams
[22:49:19] <ermine> да без кабала плохо юзать туеву хучу депендсов
[22:50:50] <ermine> мож oasis, для сборки которого тоже нужна туева хуча, поможет этому делу
[22:53:28] <ermine> и будем таскать camlzip оригинальный, без личных патчей ygrek'a
[22:53:34] <gds> вообще-то при желании можно включить код extlib'а (весь!  я гарантирую это!), и спокойно собираться где угодно.  Наличие системного extlib'а определять по ocamlfind query.
[22:54:09] <gds> я в последнее время так и поступаю -- даже тупой копипаст решает кучу вопросов.
[22:54:25] <gds> а ещё я исправляю копирайты в комментариях.
[22:54:30] <gds> ой, чото лишнее сказал.
[22:54:55] <ermine> gds: гарантируешь неналичие конфликта имен?
[22:55:06] <ermine> как там с Enum ,skj
[22:55:08] <ermine> было
[22:56:02] <gds> если использовать только свой extlib -- только он используется.
конечно, extlib vs deriving -- там схватка двух якодзун, там без ручного вмешательства было никак, но тут речь о другом.  О нехватке зависимостей.
[22:57:41] <ermine> причем не простых зависимостей, а с измененным содержимым
[22:57:50] <ermine> неавторизованным
[22:59:43] myxomop87 вышел(а) из комнаты
[23:01:46] <ygrek> ну будешь таскать оригинальный и писать gzip в сокет через файл, очень круто
[23:01:57] <ermine> может лучше бить за наличие .mli файлов
[23:02:58] <ermine> кста, а у lwt есть канал-строка
[23:03:25] <ygrek> вот именно что кста, у каждой либы своя абстракция над каналом
[23:03:37] <ygrek> ну lwt ещё можно, они типа асинхронные
[23:04:19] <ermine> но из-за .mli я не могу этим каналом воспользоваться
[23:04:20] <ygrek> насчёт mli, учитывая pr#4166, бить надо и за отсутствие :)
[23:04:53] <ermine> а что там в двух словах?
[23:05:16] <ermine> ты шо, зубришь номера багорепортов?
[23:05:28] <ygrek> не, у меня просто интернет есть
[23:05:32] <ygrek> недалеко
[23:05:49] <ygrek> external'ы vs module initialization
[23:05:52] <Typhon> "and it also bites those lazy folks (like me) who do not write mli interfaces.." хаха
[23:06:31] <ygrek> ну я не пишу mli если нет смысла - для биндингов часто получается ml = mli
[23:06:48] <ygrek> но вот из-за этой "фичи" - приходится
[23:08:48] ermine задумалась - не скопипастить ли "скрытые" функции просто...
[23:09:50] <ermine> а может и не скопипастить, а подправить, и вместо канала сунуть Buffer
[23:10:59] <ermine> о, Lwt_chan депрекатед
[23:11:01] <ermine> черт
[23:16:11] <ermine> lwt_io гораздо продвинутее
[23:17:15] <ygrek> lwt-ちゃん
[23:18:36] <ermine> какой ужасный шрифт
[23:19:53] ygrek вышел(а) из комнаты
[23:21:11] ygrek вошёл(а) в комнату
[23:21:48] ygrek вышел(а) из комнаты
[23:22:43] ygrek вошёл(а) в комнату
[23:23:00] ygrek вышел(а) из комнаты
[23:27:59] ygrek вошёл(а) в комнату
[23:43:17] gloomycellar вошёл(а) в комнату
[23:43:49] gloomycellar вышел(а) из комнаты: QIP 2010: Спокойное общение
[23:47:48] arhibot вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!