Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 8 декабря 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:45] <ermine> camlp4 - не годная игрушка
[00:21:32] <bobry> gds: почему тип это []?
[00:21:42] <bobry> аа, list в смысле
[00:23:27] <bobry> клевая у х-ля вика, сначала хвалят laziness, а потом «Use strict returns ( return $! ...) unless you absolutely need them lazy.»
[00:23:28] <gds> а я криво померял производительность окасакиной структуры.
[00:23:37] <bobry> gds: какой из?
[00:24:35] komar вышел(а) из комнаты: Replaced by new connection
[00:24:36] komar вошёл(а) в комнату
[00:24:41] dzhon вошёл(а) в комнату
[00:26:04] <gds> bobry: самой крутой, конечно.  catenable double-ended queues в хитром варианте с O(1) append'ом.
[00:33:52] komar вышел(а) из комнаты: Replaced by new connection
[00:33:53] komar вошёл(а) в комнату
[00:46:53] komar вышел(а) из комнаты: Replaced by new connection
[00:46:53] komar вошёл(а) в комнату
[01:30:15] Kakadu вышел(а) из комнаты
[01:49:13] ftrvxmtrx вошёл(а) в комнату
[01:59:24] <ermine> всё начало получаться
[02:00:26] <ermine> currified constructor - это когда рядом два конструктора
[02:00:35] ermine вышел(а) из комнаты
[02:17:38] komar вышел(а) из комнаты
[02:20:24] dzhon вышел(а) из комнаты
[03:16:40] <gds> понял, как в compile-time ограничить сверху натуральное число, передаваемое как аргумент.
надо всего лишь
type n 'a = Z | S of 'a
, а далее, например, для ограничения "не больше 3", передавать значение с типом
n (n (n unit))
, которое может быть, следите за руками: Z | S Z | S (S Z) | S (S (S () )).
[03:34:44] f[x] вошёл(а) в комнату
[03:42:58] f[x] вышел(а) из комнаты
[04:06:22] gds вышел(а) из комнаты: Replaced by new connection
[04:06:23] gds вошёл(а) в комнату
[09:11:56] bobry вошёл(а) в комнату
[09:15:58] komar вошёл(а) в комнату
[09:24:28] <bobry> gds: тебя тут ждут https://github.com/ocaml-batteries-team/batteries-included/issues/142#issuecomment-3057101
[09:25:12] <bobry> а про натуральные числа — известный финт то вроде как :) правда на практике оно по-моему слабо применимо
[09:55:15] ftrvxmtrx вышел(а) из комнаты
[09:58:54] ftrvxmtrx вошёл(а) в комнату
[10:12:41] bobry вошёл(а) в комнату
[10:12:41] bobry вышел(а) из комнаты
[10:25:06] dzhon вошёл(а) в комнату
[10:32:41] bobry вышел(а) из комнаты
[10:55:03] bobry вошёл(а) в комнату
[11:09:57] ermine вошёл(а) в комнату
[11:20:53] bobry вышел(а) из комнаты
[11:41:06] dzhon вышел(а) из комнаты: Replaced by new connection
[11:41:37] dzhon вошёл(а) в комнату
[11:47:34] <gds> bobry: присунул в батарейки.  а финт насчёт "не больше заданного числа" я раньше не видел, потому и отписал.
[11:47:45] ftrvxmtrx вышел(а) из комнаты
[12:06:03] bobry вошёл(а) в комнату
[12:06:44] <bobry> что-то день сегодня какой то — мало того что в х-ле замьютили гостей, так у меня еще и адиум зависает, как только я туда захожу
[12:06:52] <bobry> в haskell@c.j.r тобишь
[12:12:10] <gds> радоваться надо.
[12:15:11] <bobry> на удивление, у меня в конторе все вдруг захотели писать на х-ле ..
[12:15:26] <bobry> хотя что удивительного, камл же мертв
[12:23:46] <gds> bobry: так они же камло ниасилили.  неудивительно, что субъективный выбор не всегда правильный.
[12:24:37] <gds> х-ь тоже ниасилят, особенно в некоторых его моментах.  всё будет нормально.
[12:28:29] <bobry> да не — тут немного другой расклад, камло никто и не пробовал ..
[12:29:09] <gds> ну вот, я примерно про то же.
[12:44:14] Андрей Ковбович вошёл(а) в комнату
[13:16:00] dzhon вышел(а) из комнаты: Replaced by new connection
[13:17:07] dzhon вошёл(а) в комнату
[13:25:42] <klapaucius> Это неправильно, я считаю.Перед хаскелем нужно обязательно какой-нибудь ML попробовать - от этого впечатление от хаскеля потом заметно улучшается.
[13:26:36] <f[x]> я думаю лучше в обратном порядке
[13:27:44] <klapaucius> В обратном порядке лучше не надо. Вот я стал писать на F# после знакомства с хаскелем и это сильно ухудшило мое впечатление от F#.
[13:28:25] <klapaucius> Зачем себя лишний раз расстраивать?
[13:29:06] dzhon вышел(а) из комнаты
[13:29:30] <f[x]> нетипичный пример
[13:33:26] dzhon вошёл(а) в комнату
[13:37:43] Typhon вышел(а) из комнаты
[13:44:36] Kakadu вошёл(а) в комнату
[13:45:42] komar вышел(а) из комнаты
[13:45:50] komar вошёл(а) в комнату
[13:45:56] komar вышел(а) из комнаты
[13:46:04] komar вошёл(а) в комнату
[13:47:59] Андрей Ковбович вышел(а) из комнаты
[13:50:33] dzhon вышел(а) из комнаты
[14:26:33] dzhon вошёл(а) в комнату
[14:28:17] dzhon вышел(а) из комнаты
[14:30:52] dzhon вошёл(а) в комнату
[14:33:39] shaggie вошёл(а) в комнату
[14:51:04] dzhon вышел(а) из комнаты: Replaced by new connection
[14:51:13] dzhon вошёл(а) в комнату
[15:13:55] ftrvxmtrx вошёл(а) в комнату
[15:14:21] ftrvxmtrx вышел(а) из комнаты
[15:14:57] ftrvxmtrx вошёл(а) в комнату
[15:28:17] dzhon вышел(а) из комнаты
[15:28:48] Typhon вошёл(а) в комнату
[15:28:51] dzhon вошёл(а) в комнату
[15:52:40] ad1862 вошёл(а) в комнату
[16:07:04] ad1862 вышел(а) из комнаты
[16:11:21] <f[x]> gds: -> http://www.lexifi.com/blog/runtime-types
[16:27:46] bobry вышел(а) из комнаты
[16:38:03] dzhon вышел(а) из комнаты
[16:45:01] komar вышел(а) из комнаты
[16:47:22] <gds> f[x]: на словах -- неплохо, надо смотреть подробнее.
[16:48:49] <f[x]> похоже на кадастр
[16:51:26] <gds> f[x]: гадство.  один в один практически.
[16:52:30] <Typhon> но они опять цомпелятор патчили же
[16:53:00] <gds> вероятно.  Впрочем, кадастр никуда не уходит.  "Не дождётесь."
[17:01:03] <Kakadu> f[x]: а то ТЗ на них пофиксил?
[17:01:22] <f[x]> нет ещё
[17:02:20] <Kakadu> а то я тут породил недоних
[17:02:39] <Kakadu> https://github.com/Kakadu/barbra
[17:46:33] <gds> кто-нибудь этого [...] окасаку тщательно разбирал?  чую, есть момент, который недопонимаю.
[18:04:38] komar вошёл(а) в комнату
[18:55:28] letrec вошёл(а) в комнату
[19:30:50] arhibot вошёл(а) в комнату
[20:05:35] letrec вышел(а) из комнаты
[20:07:43] <ermine> глупый вопрос: имею строку "\\277" (восьмеричное число), как строку быстро превратить в char?
[20:08:07] <f[x]> Char.code "\\277".[0]
[20:09:47] <ermine> а остальное?
[20:12:36] <ermine> надо видимо заменять на 0o277
[20:21:28] Typhon вышел(а) из комнаты
[20:35:45] Kakadu вышел(а) из комнаты
[20:39:26] <gds> взял вырожденный случай -- есть очереди, реализованные согласно заветам окасаки, и через тупой список.  ход эксперимента: делаем Gc.compact (), добавляем в пустой список через cons элементов количеством "size", изничтожаем их через tail до упора, повторяем "repeat" раз, измеряем время.  и вот, что-то непонятно, почему не O(1), даже по сравнению со списками (почему в списках время растёт, мне понятно, нагрузка на мусорщик).  https://docs.google.com/spreadsheet/ccc?key=0AtgxgH8vnvbNdG1IMThHN1ZtX0ZEeFFyWUg2ZWZpV1E
[20:49:00] ftrvxmtrx вышел(а) из комнаты
[20:50:21] ermine подозрительно смотрит на gds
[20:51:34] <ermine> gds: а какую задачу ты решаешь?
[20:51:48] Kakadu вошёл(а) в комнату
[20:52:34] <gds> ermine: я решаю задачу "сделать чисто-функциональную структуру данных, имеющую O(1) по операциям cons/snoc, head/last, tail/init, apped".  мою задачу, судя по всему, решил окасаки.  но вот я не могу понять, то ли не совсем решил, то ли лыжи не едут.
[20:52:40] ermine страдает вопросом - как организовать списки диапазонов символов, то бишь классы символов, чтобы repeat раз по ним тестить строчку инпута
[20:52:55] Kakadu вышел(а) из комнаты
[20:55:00] <ermine> попросту говоря, как представить то, что выражает [0-9a-z\t_\n]
[20:55:32] <ermine> как распарсить - нет проблем
[20:55:49] <ermine> как тестить впрочем, не особо проблематично
[20:56:43] <gds> ermine: если символы в пределах аскии, то бери массив битов.  Если символы юникодные, бери radix tree.
[20:58:43] <ermine> gds: ну грамматикой можно задавать хоть уникод
[20:59:15] <gds> ты же не про громатеку интересуешься, а про хранение.  и вот, оно, в целом, разное оптимально.  для одних случаев так, для других эдак.
[20:59:18] <ermine> как там в спеке xml - [#x100-#x200]
[20:59:31] <ermine> но распарсить не проблема
[21:00:53] <gds> бери compressed radix trees.
[21:01:00] <ermine> gds: ну я думаю насколько это хреново перебирать варианты Range (x1, x2) | Range (x1, x2) | Char x | Range (x1, x2)
[21:01:23] <ermine> точнее можно ли чонить с этим беспределом делать
[21:01:30] <gds> хреново, но по первОй сойдёт.  если сделаешь это модулем, потом пофиксишь имплементацию.
[21:03:06] <ermine> ага
[21:04:34] <gds> только советую добавить функцию типа "get_ranges", которая будет из результатов комбинации строить промежуточное представление, а этим get_ranges его брать.  пока identity, потом будет полезно запилить туда генерацию radix tree или чего ещё там придумаешь.
[21:05:41] <gds> то есть, будет алгебра для построения ranges, а потом будет какой-нибудь тип compiled_ranges (лучше даже абсрактный), который собственно будет участвовать в "does_char_matches : compiled_ranges -> char -> bool".
[21:34:33] ftrvxmtrx вошёл(а) в комнату
[21:46:37] shaggie вышел(а) из комнаты
[21:47:05] <bobry> ну шо, посмотрел я на то шо делают с template haskell -- выглядит оно довольно позорно, в частности есть такой типа-орм под названием persistent, который по *своему* декларативному синтаксису худо бедно генерит нужные типы и функции для работы  базой
по ощущениям, мерзость использования этого чуда зашкаливает. например не понятно почему нельзя было обойтись без велосипеда, и не заюзать честный камловей -- напр. with persist
для желающих ознакомиться: http://www.yesodweb.com/book/persistent
[21:50:34] <bobry> из того шо понравилось -- у ghc много вкусных расширений, которые вроде и не соотв. стандарту, но которыми уже можно пользоватья, вот бы камлу такое же
[21:50:49] <bobry> правда наверное для этого надо увеличить кол-во разработчиков на порядок ...
[21:51:58] arhibot вышел(а) из комнаты
[21:52:42] <gds> bobry: не столько количество разработчиков, сколько добавить возможность динамически подгружать и вызывать нужные штуки при компиляции (например, преобразования над typedtree, над lambda, над чортом-с-лопатой).  а делается весьма просто, если бы это было кому-нибудь нужно.  ну, пару человеко-дней ушло бы.
[21:53:07] bobry с трудом представляет сложность
[21:53:22] <bobry> надо собраться и дочитать очередной inria-срачик в ml
[21:54:52] Kakadu вошёл(а) в комнату
[21:59:59] <gds> от срачика не представишь сложность!11
[22:00:30] <bobry> sure :)
[22:01:04] <bobry> gds: кстати камл у нас в вакансии для красного словца написан -- на нем никто кроме меня писать не хочет ..
[22:07:32] <Kakadu> а у вас это где?
[22:08:01] <bobry> Kakadu: селектел, http://amarao-san.livejournal.com/2341622.html
[22:08:18] <bobry> хотя наверное лучше в приват, если интересно :)
[22:20:13] ermine вышел(а) из комнаты
[22:45:45] dzhon вошёл(а) в комнату
[23:04:16] <bobry> ох какая вкусность все таки апликативные функторы, прямо панацея в мире х-леквских монадических ужасов ..
[23:31:06] <gds> давно говорил!
[23:33:49] <bobry> да-да, я только недавно вкус начал чувствовать :)
[23:34:21] <bobry> gds: а как православно делать логирование с монатками?
[23:34:55] <bobry> я что-то гуглил-гуглил, вроде какой нить Writer или WriterT подходит, а реализаций, использующих их что-то и не видно
[23:44:25] komar вышел(а) из комнаты
[23:47:47] komar вошёл(а) в комнату
[23:52:32] ftrvxmtrx вышел(а) из комнаты
[23:53:52] komar вышел(а) из комнаты
[23:59:17] f[x] вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!