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

GMT+4
[00:54:11] gds вышел(а) из комнаты
[01:01:54] gds вошёл(а) в комнату
[03:06:45] sevenov вышел(а) из комнаты
[03:06:59] sevenov вошёл(а) в комнату
[03:41:29] sevenov вышел(а) из комнаты
[03:42:27] sevenov вошёл(а) в комнату
[03:56:21] sevenov вышел(а) из комнаты
[03:56:32] sevenov вошёл(а) в комнату
[04:47:33] john вошёл(а) в комнату
[05:27:59] sceptic вышел(а) из комнаты
[07:07:11] john вышел(а) из комнаты
[07:09:24] john вошёл(а) в комнату
[08:22:16] gds вышел(а) из комнаты
[08:53:29] gds вошёл(а) в комнату
[09:21:00] john вышел(а) из комнаты
[10:47:08] animist вышел(а) из комнаты: Replaced by new connection
[10:48:15] animist вошёл(а) в комнату
[11:05:38] f[x] вошёл(а) в комнату
[11:41:29] john вошёл(а) в комнату
[11:58:14] Mon вышел(а) из комнаты
[12:04:29] sceptic вошёл(а) в комнату
[12:10:05] <f[x]> Насколько по ламерски будет временно открыть pipe для того чтобы gzip'нуть туда данные, а с другого конца их прочитать в ocamlnet'овский channel?
[12:10:28] <f[x]> или лучше выдрать из батареек код?
[12:12:04] Mon вошёл(а) в комнату
[12:14:40] <gds> по-моему, как обходной вариант -- нормально. если чаще раза в 10 секунд -- лучше конечно camlzip взять.
[12:14:57] <f[x]> так это с camlzip'ом
[12:15:11] <f[x]> трабла то в том что camlzip умеет output только в out_channel
[12:15:47] <gds> тогда приемлемо, если профайлер не жалуется.
[12:16:10] <gds> считай, что это такой message passing процессу, который занимается сжатием :)
[12:30:51] Mon вышел(а) из комнаты
[12:31:17] Mon вошёл(а) в комнату
[12:43:43] animist вышел(а) из комнаты
[12:43:57] animist вошёл(а) в комнату
[12:57:23] Typhon вошёл(а) в комнату
[13:13:28] Typhon вышел(а) из комнаты
[13:13:31] john вышел(а) из комнаты
[13:15:27] john вошёл(а) в комнату
[13:17:53] Mon вышел(а) из комнаты
[13:24:03] Typhon вошёл(а) в комнату
[13:26:06] john вышел(а) из комнаты
[13:32:01] Mon вошёл(а) в комнату
[13:42:10] Typhon вышел(а) из комнаты
[14:05:49] Typhon вошёл(а) в комнату
[16:07:55] <gds> туплю.
есть взаимно-рекурсивный тип.
type lst 'a = [ Nil | Cons of elem 'a and lst 'a ]
and elem 'a = [ Elem of 'a | List of lst 'a ];
(ну можно разбить на два нерекурсивных, как-то так:
type elem 'a = [ Elem of 'a | List of list (elem 'a) ];
type lisp_expr = list (elem 'a);
)
хочется оформить по нему свёртку (fold, катаморфизм).
Будь он обычным sum type, даже ссылающимся на себя (например, дерево), всё было бы просто. А тут -- не понимаю.
[16:34:20] <f[x]> а в чём проблема?
[16:34:35] <f[x]> у меня дольше заняло валидное значение построить - столько скобочек :)
[16:34:43] <gds> кажется, уже нет проблемы.
[16:35:34] <gds> сейчас дорулю и сообщу.
[16:35:38] <f[x]> http://paste.org.ru/?5cayj2
[16:38:27] <gds> э не. Ты фактически разворачиваешь это в список, и (1 (2 3)) будет равно ((1 2) 3) в контексте сложения. Мне же нужен более честный подход, с разной обработкой списков и элементов.
[16:43:24] <f[x]> не понял. другой порядок обхода нужен?
[16:44:46] <f[x]> вообще-то это дерево получается
[16:45:30] <gds> разная обработка элементов и списков нужна.
то есть, чтобы можно было в fold передать простые функции, которыми в результате обработки получить исходное дерево. Как в случае со списками,
# let id lst = List.fold_right (fun item acc -> item :: acc) lst [];;
val id : 'a list -> 'a list = <fun>
# id [1; 2; 3];;
- : int list = [1; 2; 3]
[16:45:44] <gds> в простое дерево это не вписать, пробовал.
[16:46:14] <gds> то есть, в дерево, представимое одним индуктивным типом.
[16:46:25] <gds> хотя может и можно, а я плохо пробовал.
[17:31:49] gds вышел(а) из комнаты
[17:44:08] animist вышел(а) из комнаты: Replaced by new connection
[17:50:29] f[x] ничего не понял
[17:50:52] <f[x]> твой тип это частный случай бинарного дерева
[17:52:15] <f[x]> для дерева не существует такого fold : ('a -> 'b -> 'b) -> 'a tree -> 'b -> 'b такого что 'b = 'a tree
[17:52:51] <f[x]> просто потому что недостаточно информации передаётся в итератор
[17:53:04] <f[x]> т.е. сигнатура у fold должна быть другая
[17:58:35] gds вошёл(а) в комнату
[18:01:12] <gds> f[x]: частный случай, да не полное дерево. Если попробовать представить так, то у меня самый правый элемент должен быть Nil.
Насчёт "мало информации" -- именно. Там сигнатура совершенно другая, гораздо более аццкая получается. Но я понял, куда копать, и вроде асилю сам. Покажу результат, когда сделаю.
[18:31:12] ermine вышел(а) из комнаты
[18:42:30] ermine вошёл(а) в комнату
[19:42:38] sevenov вышел(а) из комнаты: Replaced by new connection
[19:42:58] sevenov вошёл(а) в комнату
[19:46:33] sevenov вышел(а) из комнаты
[20:00:12] sevenov вошёл(а) в комнату
[20:09:21] f[x] вышел(а) из комнаты
[20:14:49] Typhon вышел(а) из комнаты
[22:06:34] sevenov вышел(а) из комнаты
[23:17:42] Typhon вошёл(а) в комнату
[23:25:44] john вошёл(а) в комнату
[23:47:32] sevenov вошёл(а) в комнату
[23:50:10] Typhon вышел(а) из комнаты: Replaced by new connection
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!