Home
OCaml (aka Objective Caml), а также прочие ML'и, F#, Coq, etc
ocaml@conference.jabber.ru
Четверг, 21 ноября 2013< ^ >
f[x] установил(а) тему: OCaml / ОКэмл / Камль -- http://ocaml.org/ | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | KEEP CAML AND CURRY ON | Coq далее доказывает в coq@c.j.r | F# - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[00:29:32] tilarids вошёл(а) в комнату
[00:43:26] <bobry> блин, почему камлюнити не породило ещё библиотечку с консистентными обертками над Int{32,64}, Nativeint и ко
[00:43:48] <bobry> не хочется мне тащить core / batteries / extlib просто потому, что нужно абстрагировать численный тип
[00:44:16] <gds> > не породило ещё библиотечку
может потому что не было нужды?
[00:44:42] <bobry> видимо не было, но маленькая библиотечка выглядит удобно (по крайней мере если бы она была уже написана :)
[00:44:55] <bobry> можно было бы туда и всякие мат. функции присунуть
[00:45:01] <bobry> над целыми типами
[00:48:03] <gds> ну так запили.  Ничего сложного быть не должно.  Заодно ею можно было бы систематизировать мои Ops.Float_as_int всякие.
[00:48:35] <bobry> запилю, ибо сил нет смотреть на эти shift_right_logical и прочие длинные_функции вместо операторов
[01:01:37] bobry вышел(а) из комнаты
[01:02:43] ForNeVeR вышел(а) из комнаты: Replaced by new connection
[01:02:49] ForNeVeR вошёл(а) в комнату
[01:02:53] bobry вошёл(а) в комнату
[01:06:53] <gds> да, было бы полезно.  Как показывает мой опыт, часто либо float, либо int64 является преимущественным типом данных в программе, и разумно переопределить операции на них на + - * /, тогда как для int оставить, например, +. -. *. /.
[01:08:25] <bobry> я вот сомневаюсь по поводу _as_float / _as_int
[01:08:32] <bobry> ибо предпочитаю локальные open
[01:09:23] <gds> а я предпочитаю один раз глобально и не парить себе моск.  Впрочем, тут сильно зависит от задачи.
[01:24:09] tilarids вышел(а) из комнаты: Machine going to sleep
[01:33:06] ftrvxmtrx вышел(а) из комнаты
[01:37:58] bobry вышел(а) из комнаты
[01:49:59] <gds> тем, кто следит за caml-list:
> That means using balanced trees for the buckets
впервые согласен с гердушкой.
[01:58:25] ftrvxmtrx вошёл(а) в комнату
[02:10:49] <aleksey> а тем кто не следит?
[02:17:00] <gds> aleksey: суть токова.  есть хрень, которая кушает внешние данные в качестве ключей для хештаблицы.  веб-сервис какой, например.  можно так подобрать данные, чтобы один из бакетов сильно вырос, превратив хештаблицу в односвязный список, с последствиями для цпу.  для решения этого сделали "рандомизированные хештаблицы" в свежих окамлах.  но и это не решение, так как можно угадать seed и всё такое.  и вот, там обсуждение про криптографически-суровое шифрование ключа.  но тоже не очень решение.  альтернатива -- скрестить хештаблицу и дерево для извращённых случаев, оставляя в худшем случае O(log n).
[02:18:31] <aleksey> а как угадать seed?
[02:18:56] <aleksey> если хочеццо гарантий -- тупо сбалансированные деревья юзать
[02:21:10] <gds> про угадать -- не вникал особо, в качестве ссылки было http://blog.booking.com/hardening-perls-hash-function.html .
[02:21:18] <gds> так хочется и производительности, и гарантий!
[02:29:09] <aleksey> а есть бенчмарк hashtbl vs map?
[02:29:47] <aleksey> hashtbl быстрее, но вряд ли настолько что их так мучать
[02:36:50] <aleksey> ну в этой статье вроде ж как решение предлагается
[02:37:07] <aleksey> и так и сяк порандомизировать, и готово
[02:39:55] strobegen вышел(а) из комнаты
[04:07:30] tilarids вошёл(а) в комнату
[04:35:35] tilarids вышел(а) из комнаты: Machine going to sleep
[04:50:52] tilarids вошёл(а) в комнату
[05:04:35] f[x] вошёл(а) в комнату
[05:57:15] f[x] вышел(а) из комнаты
[06:12:28] dlebedev вошёл(а) в комнату
[06:22:55] f[x] вошёл(а) в комнату
[06:29:37] dlebedev вышел(а) из комнаты: Replaced by new connection
[06:29:38] dlebedev вошёл(а) в комнату
[06:36:42] strobegen вошёл(а) в комнату
[06:39:27] tilarids вышел(а) из комнаты: Machine going to sleep
[06:49:31] <f[x]> а кто-нибудь может найти на новом и shiny ocaml.org ссылку на багтрекер и на репозиторий с кодом?
[07:04:25] ForNeVeR вышел(а) из комнаты
[07:04:38] <dlebedev> На странице http://ocaml.org/docs/install.html есть ссылка на http://ocaml.org/docs/releases/svn.html, но ссылка битая.
[07:04:47] ForNeVeR вошёл(а) в комнату
[07:07:18] <dlebedev> А в подвале на любой (?) странице сайта можно найти ссылку на Github, где путем несложных манипуляций можно выйти на страницу https://github.com/ocaml/ocaml, где размещена копия svn-репозитория INRIA. Больше нифига не нашел
[07:10:00] <f[x]> угу
[07:10:36] <f[x]> печально сие, прячут суть подальше
[07:10:38] <f[x]> http://www.swi-prolog.org/pack/list?p=jolog
[07:13:47] <dlebedev> Багтрекер официальный, как я понял, здесь - http://caml.inria.fr/mantis/view_all_bug_page.php
[07:17:34] <f[x]> да
[08:25:09] tilarids вошёл(а) в комнату
[09:55:15] f[x] вышел(а) из комнаты
[10:42:14] bobry вошёл(а) в комнату
[10:59:47] f[x] вошёл(а) в комнату
[11:06:33] bobry вышел(а) из комнаты
[11:11:33] ermine вошёл(а) в комнату
[11:14:38] bobry вошёл(а) в комнату
[11:24:28] tilarids вышел(а) из комнаты
[11:46:24] bobry вышел(а) из комнаты
[11:49:48] Typhon вошёл(а) в комнату
[12:39:59] Kakadu вошёл(а) в комнату
[13:02:09] bobry вошёл(а) в комнату
[13:06:49] <bobry> Господа, а если я в модуле напишу что-то типа let xs = Array.init 5 succ, то оно при компиляции посчитается?
[13:07:14] <bobry> И более общий вопрос: где-нибудь описано как сворачивание констант в камле работает?
[13:07:26] <aleksey> не посчитается
[13:07:49] <bobry> Ах, потому что функция в init может иметь сайд эффекты..
[13:08:23] <bobry> А когда посчитается?
[13:08:38] <aleksey> Array.init никогда :)
[13:08:49] <aleksey> 2+2 мжет и посчитается
[13:09:14] <bobry> Не, вот есть у меня xs в модуле, и я из других модулей делаю что-то типа xs.(i)
[13:09:26] <bobry> Как это будет работать?
[13:09:59] <aleksey> так и будет, чтение массива
[13:10:14] <bobry> Так а в какой момент массив будет инициализирован?
[13:10:42] <aleksey> там где Array.init/make
[13:10:55] <aleksey> в рантайме
[13:12:40] <gds> этот массив инициализируется при инициализации топлевел-значений модуля.  Если это простой-обычный модуль, то порядок инициализации соответствует порядку линковки cmo/cmx.  Если это внутри функтора, то инициализация, соответственно, при применении аргумента к этому функтору.
[13:12:59] <gds> (порядок инициализации внутри модуля -- сверху вниз по топлевел-значениям)
[13:13:48] <bobry> Окей, теперь понятно, спасибо :)
[13:13:50] <gds> почему Array.init ... не считают на этапе компиляции -- видимо, на случай Array.init 100500 ссук, чтобы бинарник не раздувать.
[13:14:20] <bobry> Ну так там может быть что-то типа printf же внутри, и тогда черт посчитаешь
[13:14:22] <gds> то есть, если надо -- напиши явно константу и сам управляй раздутием бинарника, сознательным образом.
[13:14:24] <bobry> или FFI вызов какой
[13:14:44] <gds> да, может быть.  Но анализ чистоты всё-таки присутствует, какой-никакой.
[13:14:55] <bobry> Ого, камло умеет?
[13:15:11] <gds> чуть-чуть, только для себя.
[13:15:24] <bobry> И читать как полагается только в сырцах?
[13:15:41] <gds> да он почти не используется, этот анализ, как я понял.  Так что и читать не надо.
[13:16:36] <gds> и да, FFI в Array.init есть: create и unsafe_set.  Не такой уж и сайдэффект, можно было бы проанализировать.  Но смысла мало -- редкий частный случай.
[13:19:07] Zbroyar вошёл(а) в комнату
[13:29:10] bobry вышел(а) из комнаты
[13:39:25] Typhon вышел(а) из комнаты
[13:40:57] bobry вошёл(а) в комнату
[13:47:47] Typhon вошёл(а) в комнату
[14:24:57] Zbroyar вышел(а) из комнаты
[14:58:10] dlebedev вышел(а) из комнаты
[15:05:15] bobry вышел(а) из комнаты
[15:13:56] ForNeVeR вышел(а) из комнаты: Replaced by new connection
[15:14:02] ForNeVeR вошёл(а) в комнату
[15:37:29] f[x] вышел(а) из комнаты
[17:06:23] ForNeVeR вышел(а) из комнаты: Unhandled exception at 0x00000000.
[17:20:34] ForNeVeR вышел(а) из комнаты: Unhandled exception at 0x00000000.
[17:31:16] ForNeVeR вошёл(а) в комнату
[17:58:10] f[x] вошёл(а) в комнату
[19:30:25] Typhon вышел(а) из комнаты
[19:48:57] ForNeVeR вошёл(а) в комнату
[19:49:12] tilarids вошёл(а) в комнату
[20:07:28] komar вышел(а) из комнаты: Replaced by new connection
[20:07:28] komar вошёл(а) в комнату
[21:14:41] Kakadu вышел(а) из комнаты
[21:33:17] f[x] вышел(а) из комнаты
[22:15:20] Kakadu вошёл(а) в комнату
[22:41:07] ForNeVeR вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!