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

GMT+4
[00:01:52] <Kakadu> ой потикёть всё после этого
[00:04:26] Typhon вышел(а) из комнаты: Replaced by new connection
[00:04:28] Typhon вошёл(а) в комнату
[00:21:39] Kakadu вышел(а) из комнаты
[00:56:48] ftrvxmtrx вошёл(а) в комнату
[01:21:43] Typhon вышел(а) из комнаты
[01:47:42] ftrvxmtrx вышел(а) из комнаты
[01:48:58] ftrvxmtrx вошёл(а) в комнату
[01:53:33] ftrvxmtrx вышел(а) из комнаты
[03:22:27] komar вошёл(а) в комнату
[07:31:34] komar вышел(а) из комнаты
[07:33:15] komar вошёл(а) в комнату
[08:17:38] Typhon вошёл(а) в комнату
[08:26:37] Typhon вышел(а) из комнаты: Replaced by new connection
[08:26:38] Typhon вошёл(а) в комнату
[09:17:35] Typhon вышел(а) из комнаты: Replaced by new connection
[09:17:36] Typhon вошёл(а) в комнату
[09:23:39] bobry вошёл(а) в комнату
[09:34:38] Typhon вышел(а) из комнаты: Replaced by new connection
[09:34:39] Typhon вошёл(а) в комнату
[10:33:15] Typhon вышел(а) из комнаты: Replaced by new connection
[10:33:16] Typhon вошёл(а) в комнату
[11:13:49] Kakadu вошёл(а) в комнату
[11:20:01] ermine вошёл(а) в комнату
[11:23:32] <f[x]> gds: если Some_val это функция (у меня всегда функция), то переданное значение регистрируется через params и всё ок
[11:26:57] <Kakadu> f[x]: https://github.com/Kakadu/lablqt/blob/master/test_gen/qwrappers.h#L76
[11:26:59] <Kakadu> ?
[11:29:37] <f[x]> кстати в том примере кода что ты выше кидал лажа в том что Some_val нифига не создаёт option, а принимает option
[11:30:18] <f[x]> лучше так :
    some = caml_alloc_small(1, 0);
    Field(some, 0) = v;
[11:31:20] <Kakadu> f[x]: ууух, это вполне похоже на мой креш!
[11:31:47] <f[x]> я такую же лажу ещё давно фиксил
[11:31:53] <f[x]> пройди по всему коду и проверь
[11:32:03] <f[x]> или переназови чтобы не путаться
[11:32:45] <f[x]> там Some_of_value и Value_of_some
[11:33:33] <Kakadu> вечером сделаю
[11:33:41] <Kakadu> как всё весело ожнако
[11:33:48] <Kakadu> и как у меня вообще раньше что-то работало
[11:52:04] ftrvxmtrx вошёл(а) в комнату
[12:20:52] komar вышел(а) из комнаты
[12:21:12] shaggie вошёл(а) в комнату
[12:21:17] shaggie вышел(а) из комнаты
[12:23:47] komar вошёл(а) в комнату
[13:06:14] komar вышел(а) из комнаты
[13:06:59] komar вошёл(а) в комнату
[13:59:20] shaggie вошёл(а) в комнату
[14:06:32] komar вышел(а) из комнаты
[14:06:41] komar вошёл(а) в комнату
[14:19:22] komar вышел(а) из комнаты
[14:19:38] komar вошёл(а) в комнату
[14:41:00] <Kakadu> klapaucius: если я не ошибаюсь ты на фадиезе работал?
[14:41:33] <klapaucius> Да.
[14:43:08] <Kakadu> не приходилось писать (в аттрибутах) код, который читает/модифицирует ast f#?
[14:43:44] <klapaucius> Нет.
[14:53:07] bobry вышел(а) из комнаты
[14:59:16] bobry вошёл(а) в комнату
[14:59:45] bobry вышел(а) из комнаты
[15:04:01] bobry вошёл(а) в комнату
[16:04:55] bobry вышел(а) из комнаты
[16:09:07] ftrvxmtrx вышел(а) из комнаты
[16:10:41] ftrvxmtrx вошёл(а) в комнату
[16:28:47] bobry вошёл(а) в комнату
[16:48:32] bobry вышел(а) из комнаты
[17:24:30] <gds> чтобы более-менее полно заменить явную рекурсию на fold в контексте обхода trie, необходимо не только сворачивать всё снизу вверх, но и уметь передавать какой-либо пользовательский аргумент сверху вниз.  иначе задачи наподобие "свернуть trie до такой-то глубины, на остальное забить" как-то не очень хорошо решаются.  или туплю?
[17:31:26] <klapaucius> Да все правильно.
[17:32:19] <klapaucius> Нужно или структуру делать ленивой или делать short-circuit fold, который может свертку прервать. Иначе рекурсию полностью не заменить.
[17:32:58] <gds> структуру ленивой сделать можно (уже), но как это поможет?
[17:34:09] <gds> ленивая структура поможет в случае, когда по каким-то внешним признакам ясно, что "ниже ходить не надо", так у меня и есть сейчас, но эти признаки нужно откуда-то брать.
[17:35:25] <klapaucius> Ну, структуру можно сворачивать в некое промежуточное представление - если прекратить его "потреблять" дальше по конвейеру, то и сворачивание структуры остановится.
[17:35:26] <gds> в случае, например, когда trie представляет собой дерево файловой системы, и ясно, что в какие-нибудь директории, судя по их именам, ходить точно не нужно -- это понятно, просто не вычисляем ленивое значение, соответствующее свёртке всего, что ниже.  а с ограничением глубины -- не сообразил, что точно нужно.
[17:35:38] Kakadu в голову континьюэйшены приходят....
[17:36:09] <gds> да, cps тут хорош, но хочется сначала fold домучить, хотя бы чтобы для себя понять границы применимости.
[17:36:52] <klapaucius> Для того, чтоб написать short-circuit fold континьюэйшены и понадобатся.
[17:37:24] <gds> можно через exceptions выкрутиться, хак, но приемлемый в грязном немытом окамле.
[17:38:59] <gds> klapaucius: то есть, классический fold, если его "форсировать" (в ленивом случае), не может обрубиться на какой-то глубине сам по себе?
[17:40:37] <Kakadu> можно ещё with_return вспомнить. авось пригодится
[17:41:54] <klapaucius> В ленивом случае решение об обрубании не в фолде принимается. А в функции, которая результат работы фолда получает.
[17:44:21] <klapaucius> Ну а в случае s-c, понятное дело, решение об обрубании принимается в сворачивающей функции.
[17:45:43] <Kakadu> klapaucius: а что такое s-c?
[17:46:08] <klapaucius> short-circuit
[17:47:00] <klapaucius> Хотя и для ленивого случая можно решение внутри сворачивающей функции принимать.
[17:47:29] <gds> klapaucius: ага, вот теперь всё-всё понял.  благодарю за помощь.
[17:48:46] <gds> Kakadu: with_return не очень хочется, вообще-то, а вот про cps -- буду думать.  но, собственно, cps -- только инструмент, а нужна концепция.  видимо, какой-то аргумент буду передавать сверху вниз, в том числе.
[17:50:38] <Kakadu> а есть у кого-то неподалёку ссылка на short-circuit fold или гуглить/искать в окасаках?
[17:59:48] <gds> Kakadu: да что там непонятного.  в нужный момент обрываем и всё.
[18:00:22] <Kakadu> gds: просто термин в первый раз слышу
[18:00:55] <Kakadu> а где определено когда обрывать: внутри сруктуры данных или на совести пользователя?
[18:06:01] <gds> понятно, что пользователь решает.
[18:45:36] Kakadu вышел(а) из комнаты
[19:19:17] <gds> а вот если взять чистый cps, то каким образом будет выглядеть пробежка по списку в этом стиле?  пользовательская функция должна как-то знать, закончился список или нет, так?  видимо, этих функций должно быть две, одна на случай разбора cons, другая на случай разбора nil?
[19:53:53] Kakadu вошёл(а) в комнату
[20:02:51] <Kakadu> gds: ты про список в обычном смысле или как в твоем кадастре?
[20:04:23] <gds> Kakadu: про самый тупой из вариантов, мне чтобы принцип понять.
[20:06:29] <gds> (кстати, в моём кадастре пока особо нет списков, вроде не особо нужны, разве что классические добавочные функции над списками, но "так все делают"!)
[20:10:54] <Kakadu> кажется я стал стар. Не могу сразу написать
[20:13:06] <Kakadu> подсмотрел)
[20:13:32] <Kakadu> # let reverse xs = (List.fold_right (fun x acc -> (fun y -> acc (x::y)) ) xs (fun x->x) ) [];;
val reverse : 'a list -> 'a list = <fun>
# reverse [1;2;3;4;5];;
- : int list = [5; 4; 3; 2; 1]
[20:15:50] <Kakadu> gds: вообще я думаю ты и сам такое можешь написать. Наверное я не так понял вопрос
[20:18:09] <gds> Kakadu: да, такой reverse я могу (когда подумаю хорошенько).  а нужен мне был способ пройтись по списку в cps-стиле, так, чтобы в пользовательской функции пользователь решал, идти вглубь или вернуть результат прямо сейчас.
[20:24:53] Typhon вышел(а) из комнаты
[20:34:56] ftrvxmtrx вышел(а) из комнаты
[20:46:30] <Kakadu> что-то мой мозг отказывается работать, сорри
[21:14:31] <ermine> приляги, поспи
[21:17:43] <Kakadu> ermine: некогда!
[21:28:26] <ermine> ну сейчас детям всё равно уже пора ложиться спать
[21:28:36] <ermine> завтра встал пораньше - и за работу
[21:28:49] <Kakadu> я в 11 в школе ложился
[21:29:41] <ermine> в 11 утра?
[21:51:29] ermine вышел(а) из комнаты
[22:14:39] komar вышел(а) из комнаты
[22:15:43] komar вошёл(а) в комнату
[22:41:09] shaggie вышел(а) из комнаты
[23:25:07] ftrvxmtrx вошёл(а) в комнату
[23:28:19] <bobry> о, оказывается для х-ля таки есть аналог json-static, на TH
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!