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

GMT+4
[00:40:59] sevenov вышел(а) из комнаты: Replaced by new connection
[00:41:52] john вышел(а) из комнаты
[00:44:54] abiogenesis вышел(а) из комнаты
[00:49:53] sevenov вошёл(а) в комнату
[00:57:57] ygrek вышел(а) из комнаты
[01:05:46] sceptic вошёл(а) в комнату
[01:10:24] sevenov вышел(а) из комнаты
[01:11:00] sevenov вошёл(а) в комнату
[03:56:44] daapp вошёл(а) в комнату
[06:48:33] john вошёл(а) в комнату
[06:54:04] sceptic вышел(а) из комнаты: Replaced by new connection
[06:54:08] sceptic вошёл(а) в комнату
[06:57:09] sceptic вышел(а) из комнаты: Replaced by new connection
[06:57:13] sceptic вошёл(а) в комнату
[08:19:46] gds вышел(а) из комнаты
[08:57:26] gds вошёл(а) в комнату
[09:07:38] Typhon вошёл(а) в комнату
[10:17:57] ygrek вошёл(а) в комнату
[10:50:12] f[x] вошёл(а) в комнату
[11:14:31] Typhon вышел(а) из комнаты
[11:15:57] Typhon вошёл(а) в комнату
[11:27:43] john вышел(а) из комнаты
[11:30:59] ygrek вышел(а) из комнаты
[12:04:08] john вошёл(а) в комнату
[12:30:15] ygrek вошёл(а) в комнату
[12:43:07] Kakadu вошёл(а) в комнату
[12:44:40] <Kakadu> Здравстуйте. помогите пожалуйста разобраться с синтаксисом:
[12:45:30] <sceptic> "псевдографическая порнография"
[12:45:37] <Kakadu> function | GFun (fundecl, l) -> нечто
| _ -> ()
[12:46:13] <Kakadu> где GFun of fundecl*location
[12:46:51] <Kakadu> наверное если аргумент у функции типа Gfun - работает "нечто", иначе возращает (). так?
[12:48:05] Typhon вышел(а) из комнаты
[12:48:23] Typhon вошёл(а) в комнату
[12:52:30] <gds> # type t = A of string * int | B;;
type t = A of string * int | B
# function A (str, i) -> print_string "kva" | _ -> ();;
- : t -> unit = <fun>
[12:53:02] <gds> смысл -- именно такой. и "нечто" должно тоже вычисляться в unit (или кидать исключение).
[12:53:47] <Kakadu> Спасиба!
[12:55:57] f[x] для полноты картины -- http://caml.inria.fr/pub/docs/manual-ocaml/expr.html#toc48
[13:20:18] <gds> "The Event system in OCaml is often misunderstood."
угу-угу. думал, что нормальные они, а оказались синхронные. И кому они после всего этого нужны..
[13:22:19] <f[x]> нормальные синхронные каналы
[13:22:48] <f[x]> название misleading конечно, но документацию читать тоже надо :)
[13:23:31] <gds> так я именно с чтения документации начал, так что тут всё ок.
удивило просто, кому особо нужны синхронные каналы.
[13:24:51] <f[x]> ну, как это, скажем как типизированная замена mutex+condvar
[13:28:24] <gds> я тут творю велосипеды, чувствую. нужны асинхронные каналы many to many, с возможностью послать сообщение как любому ждущему (первому, кто захочет), так и всем ждущим сразу (даже тем, кто сейчас не ждёт, а будет ждать потом).
учитывая, что ocaml threads для меня весьма новые, даже не знаю, как кошерно подойти к решению этой задачи.
конечно, вылепить из кала и заставить его работать -- это по силам, но хочется культурно.
[13:30:29] <f[x]> может equeue из ocamlnet частично подойдёт?
[13:34:14] ygrek вышел(а) из комнаты
[13:35:16] <gds> у меня мелкая задачка, нужно собирать под виндой, поэтому разве что выдрать исходник, если у него нет зависимостей. Буду смотреть сейчас.
[13:37:08] <gds> может по приколу ерланговские очереди сообщений оформить? вроде народ позитивненько отзывался о них.
[13:47:58] <gds> equeue -- на exceptions, run возвращает unit, не функционально как-то.
а вообще -- похоже на то, что нужно.
только вот там event handler'ы вызываются явно, при появлении сообщения (как бы модель push), а у меня handler'ы бывают заняты или свободны, и должны после обработки текущего сообщения блокироваться до следующего сообщения (фактически, у меня handler = thread). Можно, конечно, каждый раз интересоваться, свободна ли определённая нить и передавать ей новое задание если свободна, и делать raise Reject если занята, но имхо кривовато как-то.
[14:31:02] daapp вышел(а) из комнаты
[14:36:18] sceptic вышел(а) из комнаты
[14:49:18] <f[x]> да, не очень подходит видимо
[14:51:17] <gds> да я уже решился на конструирование велосипеда :) не страшно, но полезно.
только хочу про эрланговские почитать ещё, вдруг там хорошо сделано.
[14:53:03] <f[x]> если я правильно понимаю то ерланговские очереди отличны тем что инегрированы в язык, а так просто thread-queue
[14:54:53] <gds> этим они отличны от многих других языков, но может есть какие-нибудь отличия от других очередей.
[15:20:04] <f[x]> ermine: вообщем markov простым способом ускоряется на порядок (с 2 сек на фразу до 0.3)
[15:20:30] <f[x]> если померять время то видно что больше всего уходит на первый seek
[15:20:35] <f[x]> с word1=""
[15:21:22] <f[x]> в talks базе таких слов - 130000
[15:21:42] <f[x]> достаточно просто кэшировать их в памяти
[15:22:21] <f[x]> потребление памяти вырастает с 3 до 12 М
[15:22:28] sevenov вышел(а) из комнаты
[15:58:28] Kakadu вышел(а) из комнаты
[15:58:53] Typhon вышел(а) из комнаты
[16:06:53] <ermine> а в памяти - куда сувать?
[16:07:12] <ermine> хэштабло? мап?
[16:07:24] <ermine> или ваще список :)
[16:07:35] <ermine> у камля бедлая либла
[16:07:42] <f[x]> массив/список - всё равно
[16:07:52] <gds> а какая логика первого поиска?
[16:08:16] <ermine> искать надо по сумме каунтеров
[16:08:24] <ermine> массив тоже непонятно зачем
[16:08:25] <f[x]> смотря с чем сравнивать :) мне после плюсов вообще классно было, там шаг влево-вправо - нужен буст как минимум
[16:08:49] <gds> первое слово -- по сумме ищется? странный марков у вас там.
[16:08:54] <ermine> каунтеры рандомно меняются, поэтому тоже тяжко держать суммы up-to-date
[16:08:59] <f[x]> первый поиск ничем не отличается от остальных кроме того что у него вариантов много
[16:09:12] Typhon вошёл(а) в комнату
[16:09:21] <f[x]> ы? сумма накапливается
[16:09:38] <f[x]> логика та же что и с базой только в памяти
[16:09:58] <ermine> понятно
[16:24:54] ygrek вошёл(а) в комнату
[16:35:32] john вышел(а) из комнаты
[16:49:25] ygrek вышел(а) из комнаты
[17:31:22] gds вышел(а) из комнаты
[17:33:34] sevenov вошёл(а) в комнату
[18:00:35] gds вошёл(а) в комнату
[18:06:43] Typhon вышел(а) из комнаты
[18:15:16] ak вошёл(а) в комнату
[18:26:56] ak вышел(а) из комнаты
[19:00:01] sceptic вошёл(а) в комнату
[19:20:15] sevenov вышел(а) из комнаты
[19:20:47] sevenov вошёл(а) в комнату
[19:25:48] DimitryKakadu вошёл(а) в комнату
[20:16:15] DimitryKakadu вышел(а) из комнаты
[20:52:42] f[x] вышел(а) из комнаты: Computer went to sleep
[20:59:52] DimitryKakadu вошёл(а) в комнату
[21:07:59] ermine вышел(а) из комнаты
[21:08:22] ermine вошёл(а) в комнату
[21:48:30] sceptic вышел(а) из комнаты
[22:08:36] sceptic вошёл(а) в комнату
[22:09:31] sceptic вышел(а) из комнаты: Replaced by new connection
[22:09:34] sceptic вошёл(а) в комнату
[23:11:02] DimitryKakadu вышел(а) из комнаты
[23:12:03] gds вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!