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

GMT+4
[00:05:33] ermine вышел(а) из комнаты
[00:18:17] ftrvxmtrx вышел(а) из комнаты
[00:18:25] ftrvxmtrx вошёл(а) в комнату
[00:31:57] Kakadu вышел(а) из комнаты
[00:39:10] Typhon вошёл(а) в комнату
[01:21:23] ftrvxmtrx вышел(а) из комнаты
[01:21:26] ftrvxmtrx вошёл(а) в комнату
[01:49:58] gds вышел(а) из комнаты
[02:01:06] Typhon вышел(а) из комнаты
[03:32:14] zinid вошёл(а) в комнату
[08:49:45] komar вышел(а) из комнаты: Replaced by new connection
[08:49:45] komar вошёл(а) в комнату
[09:01:39] bobry вышел(а) из комнаты
[09:03:17] bobry вошёл(а) в комнату
[09:18:26] shaggie вышел(а) из комнаты
[09:35:16] Typhon вошёл(а) в комнату
[09:36:47] gds вошёл(а) в комнату
[10:04:19] shaggie вошёл(а) в комнату
[10:18:50] ermine вошёл(а) в комнату
[10:30:02] Kakadu вошёл(а) в комнату
[10:56:54] bobry- вошёл(а) в комнату
[11:27:22] <bobry-> Kakadu: так нечестно
[11:28:51] <Kakadu> bobry: ммм?
[11:28:54] <Kakadu> )
[11:30:49] <bobry-> # (:>);;
Error: Syntax error
[11:30:52] <bobry-> ниче не понимаю :)
[11:31:22] <Kakadu> bobry коершены
[11:31:39] <Kakadu> bobry: это coercions
[11:32:11] <bobry-> а, это объекты
[11:32:14] <bobry-> я их совсем еще не трогал
[11:32:22] <Kakadu> не только обекты
[11:32:25] <Kakadu> объекты*
[11:33:11] <Kakadu> bobry: полиморфные варианты трогал?
[11:34:03] <bobry-> совсем чуть чуть
[11:34:36] <bobry-> а вне полиморфных вариантов оно применимо?
[11:35:00] <bobry-> (1 >: float) не работает, hrm ...
[11:35:06] <bobry-> *:> float
[11:35:50] <gds> и не должно так быть.
[11:36:12] <gds> а вот вне полиморфных вариантов и объектов -- разве что http://paste.in.ua/2944/
[11:42:17] <gds> интересно, готовы ли люди пойти на динамическую типизацию в стиле моей Typeinfo, если им /в отместку/ дать способ работать с грамматиками на высоком уровне (парсеры из них лепить, например).  С точки зрения пользователя парсера это будет доведением до нужного типа: let myint32 = uget_exn ti_int32 x in ... везде, где используется полученное значение.
[11:43:32] <bobry-> gds: т.е. можно private type конкретизировать? с abstract так низя?
[11:44:39] <gds> не столько конкретизировать, сколько снять private и довести до просто типа.  И заодно лишиться возможности использовать это значение там, где нужно I.t.
[11:44:47] <gds> с abstract -- нельзя.
[11:45:33] <bobry-> т.е. (I.t :> int) это не то же самое что I.t -- странная какая то фича
[11:46:02] <gds> если автор модуля разрешает смотреть в значение -- он выведет его насколько надо в .mli (полностью, частично).
[11:46:48] <gds> фича называется private types.  Рекомендую прочитать про них подробнее, а то по данному примеру вообще ничего не понятно.
[11:47:14] <bobry-> уже читаю ага, сходу не очень понятно куда ее засунуть
[11:47:48] <gds> туда, где структуру значения показать не стыдно, а давать трогать грязными лапами не хочется.
[11:53:08] <bobry-> ого, можно даже для функций coercions юзать, neat
[11:54:02] <bobry-> собсна jane street по теме http://ocaml.janestreet.com/?q=node/59 (хотя наверное все уже и так видели :)
[11:54:21] <gds> или, например, как я в subarrays сделал: значение с приватным типом создаётся только внутри маленького модуля, и функция создания делает так, что если массив имеет len=0, то возвращается один фиксированный массив.  это помогает в том числе для того, чтобы в памяти не висели пустые подмассивы, ссылающиеся на реальные большие массивы.  ну и чтобы пустой подмассив имел физически-уникальное представление.
[11:58:25] <gds> кстати да, всякий hashconsing очень даже хорош в private types -- можно сделать так, чтобы любые структурно-равные значения были равны физически, тем самым сведя сравнение из беготни по структуре в сравнение указателей.
[12:30:21] shaggie вышел(а) из комнаты
[12:32:45] shaggie вошёл(а) в комнату
[12:38:28] komar вышел(а) из комнаты: Replaced by new connection
[12:38:28] komar вошёл(а) в комнату
[13:11:52] ygrek вошёл(а) в комнату
[13:12:05] ygrek вышел(а) из комнаты
[13:12:24] ygrek вошёл(а) в комнату
[13:48:45] <gds> задачка.  (на фокусы, а не на магию.)  Как известно, можно "паковать" типизированные значения в мономорфные значения так, чтобы, зная значение-свидетель,  вытащить оттуда запакованное значение.  Ну, в общем, там ref cell под closure, на которую ссылаются как запакованное значение, так и способ его получить.
Теперь же хочется больше.  Есть функции с типами a->b и b->c.  Но они -- в разных местах программы.  И, более того, значение с типом b нужно запаковать по некоторым причинам (а именно, цель -- запихнуть всё в гомогенную структуру данных, рассчитывающую на фиксированные a и c, но так, чтобы b могли быть разными).  Допустим, b пакуется в фиксированный тип d.  То есть, функции, положенные в структуру данных, должны иметь тип a->d и d->c.
Далее.  Допустим, у нас есть две такие функции, и мы динамически проверили, что типы обоих d совпадают (то есть, значения одинакового типа b запакованы в конкретные значения мономорфного типа d).  Теперь надо их "сшить" так, чтобы получить функцию с типом a->c, как можно более оптимальную.  Если конкретнее -- без использования той ref cell, которую вводит паковка/распаковка значений в/из d.
[13:50:08] <Kakadu> gds: ты пишешь какой-то оптимизатор кода?
[13:51:48] <gds> прикидываю возможность его написания.  Точнее, прикидываю, можно ли давать интерфейс в виде "мономорфных значений" так, чтобы их потом вырезать из кода.
[13:52:10] <gds> мне нравятся абстракции, которые оставляют как можно меньше своей, скажем, "цены".
[14:18:54] ftrvxmtrx вышел(а) из комнаты
[14:20:21] ftrvxmtrx вошёл(а) в комнату
[14:23:05] komar вышел(а) из комнаты
[14:32:15] komar вошёл(а) в комнату
[14:32:15] komar вышел(а) из комнаты
[15:47:45] letrec вошёл(а) в комнату
[16:06:56] <gds> у меня тут появляется немного времени периодически.  Если объясните мне, чем хорош bson по сравнению с json, кроме как 1. лёгкостью парсинга, 2. ограниченностью "документа" общей длиной, 3. поддержкой бинарных данных (и их специфических "подтипов"), 4. интеграцией с монгодб, то я бы подумал о его использовании и, вероятно, асилил бы преобразовалку потока байтов в json-wheel'овский Json_type.t, с которым я в последнее время люблю работать, на итератах (это не значит, что монады будут торчать из апи).  Однако limited offer -- очень ограниченное предложение.  Ограниченное тем, что уже есть два приличных парсера, и мой, может, разве что чуть лучше будет по скорости, чем обработчики стримов (итераты = блочная обработка), но, в целом, ничем не лучше, а то и хуже -- я хочу Json_type.t, а народ хочет что-то более умное, вероятно.  Ну и завязка на старый json-static, если будет желание преобразовывать это в статические типы.
[16:08:17] <gds> или может есть более интересные, но реальные и клёвые дела?  Например, интересно про "грамматики в общей форме" и их преобразования, чтобы на них лепить что-то типа picklers (т.е. в обе стороны).
[16:24:53] <gds> а с on-disk datastructures у меня затык, и проблем там больше, чем выигрыша по сравнению с продуманным использованием rdbms и nosql в нужных пропорциях.  да и вообще, народ в последнее время транзакционности хочет -- вот сволочи!
[16:28:30] komar вошёл(а) в комнату
[18:02:10] <Kakadu> вопрос про С++, чисто так чтобы узнать только ли я этого не знал.
[18:02:39] <Kakadu> Если у класса есть public метод, то всегда ли он будет у подкласса?
[18:12:18] <ygrek> если подкласс наследуется через public
[18:12:39] <Kakadu> ygrek: мало
[18:16:24] <ygrek> и не определён такой же метод в private
[18:16:43] <Kakadu> правильно
[18:18:12] <Kakadu> ещё любопытный для меня мем наковырял: когда написано что метод private, а он на самом деле protected?
[18:48:47] Typhon вышел(а) из комнаты
[18:52:16] zinid вышел(а) из комнаты
[19:12:44] shaggie вышел(а) из комнаты
[19:13:41] bobry- вышел(а) из комнаты
[19:29:28] <letrec> нарвался вот на это http://pleac.sourceforge.net/pleac_ocaml - очень понравилось
[19:29:32] <letrec> если кто не видел
[19:38:25] iNode вышел(а) из комнаты
[19:54:54] komar вышел(а) из комнаты
[19:56:18] komar вошёл(а) в комнату
[19:58:11] iNode вошёл(а) в комнату
[21:05:45] letrec вышел(а) из комнаты
[23:34:42] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!