Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 8 мая 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 | F#, Coq - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[00:35:28] oln вышел(а) из комнаты
[01:48:20] Kakadu вышел(а) из комнаты
[03:07:11] tilarids вышел(а) из комнаты
[04:40:46] zinid вошёл(а) в комнату
[07:13:18] f[x] вошёл(а) в комнату
[07:14:16] <f[x]> komar: и что это значит?
[07:14:27] <f[x]> генерятся биндинги?
[08:15:19] oln вошёл(а) в комнату
[09:58:49] f[x] вышел(а) из комнаты
[10:11:22] <komar> f[x], нет, это оазис.
[10:46:05] komar вышел(а) из комнаты: Logged out
[10:57:54] ermine вошёл(а) в комнату
[11:01:17] f[x] вошёл(а) в комнату
[11:01:53] <f[x]> komar: и тебя это сильно печалит видимо
[11:02:08] <f[x]> вообще на прошлом oud перетирали с meyer за эту тему
[11:02:18] <f[x]> говорит что ocamlbuild должен предоставлять api
[11:02:24] <f[x]> я тогда не очень понял зачем
[11:02:30] <f[x]> я сейчас всё чаще вижу что таки годная идея
[11:03:03] <f[x]> а wc -l убери - покажи что за файлы
[11:03:36] <f[x]> думаю там просто лишние файлы
[11:59:57] komar вошёл(а) в комнату
[12:02:33] ludovik вошёл(а) в комнату
[12:02:52] ludovik вышел(а) из комнаты
[12:09:36] <komar> f[x]: да, там оазис лишний.
[12:13:41] <f[x]> опять голословная чушь
[12:14:48] <komar> Это шутка.
[12:15:30] <komar> А вот куча генерящегося автоматически мусора для сборки тройки файлов — это грусть-таска-пичяль.
[12:16:13] <komar> f[x]: кстати, ты уже разобрался, как работает grub2?
[12:16:46] <f[x]> komar: я и не разбирался никогда
[12:16:52] <f[x]> он слава байтам работает
[12:16:57] <f[x]> я его не трогаю
[12:17:03] <komar> typical
[12:17:15] <f[x]> насчёт кучи генерящегося - более-менее справедливо
[12:17:25] <f[x]> но это единственный способ настройки ocamlbuild
[12:17:36] <f[x]> т.е. тут виноват не oasis а камлобилд
[12:17:42] <f[x]> потому что не предоставляет api
[12:18:15] <f[x]> komar: а ты разобрался как работает mm в твоём уютном вручную собранном и откомпилированном в голове ядре?
[12:18:42] <f[x]> это уже крайняя степень красноглазия - требовать разбирательства во всём
[12:18:48] <f[x]> на каком уровне остановиться?
[12:18:52] <f[x]> на атомах?
[12:19:36] <komar> Во-первых, разбирательство во всем — одно из самых замечательных качеств, которое я очень ценю в своих друзьях. С остальными просто смертельно скучно.
[12:20:03] <f[x]> я сейчас прохожу отбор в друзья чтоле??
[12:20:04] <komar> Во-вторых, мне никогда не надо было править mm. Если бы понадобилось и я бы встретил там кучи метаговна, то тоже бы ругался.
[12:20:16] <f[x]> тебе нужно было править grub2???!
[12:20:19] <f[x]> ну ок
[12:20:20] <komar> А вот grub2 мне править приходилось неоднократно.
[12:20:23] <f[x]> а мне не нужно было править
[12:20:25] <f[x]> ни разу
[12:20:32] <f[x]> нафига мне в нём разбираться
[12:20:48] <komar> Точно так же, как и сейчас оазисоговно.
[12:20:49] <f[x]> ты может просто не знаешь что тебе нужно поправить mm
[12:21:02] <komar> И вот я думаю, разбираться или сразу все снести и заменить двумя строчками и -include OCamlMakefile
[12:21:06] <f[x]> дава
[12:21:08] <f[x]> замени
[12:21:30] <f[x]> кто ж тебя держит
[12:21:35] <komar> Дарио расстроится.
[12:21:44] <f[x]> и правильно сделает
[12:21:46] <komar> Впрочем, он svn’ом пользуется, чего с него взять.
[12:22:06] <f[x]> потому что ему отвечать надо будет на вопросы почему под виндой не собирается
[12:22:13] <f[x]> итп
[12:23:26] <f[x]> komar: расскажи лучше зачем ты grub2 правил?
[12:23:44] <f[x]> и зачем же ты его используешь - никакой Дарио ведь не заставляет
[12:23:54] <komar> Долбиян заставил.
[12:24:08] <komar> Недавно, кстати, приходил кореш, а у него на ноутбуке lilo. Обзавидовался.
[12:24:13] <f[x]> lilo вроде ещё предлагает
[12:24:21] <f[x]> а что же ты там правил
[12:24:32] <f[x]> и это как-то некруто - дебиан юзать.
[12:24:38] <komar> f[x]: править приходится, например, каждый раз, когда я достаю систему из бекапа.
[12:24:47] <f[x]> что именно править?
[12:24:54] <f[x]> /etc/default/grub?
[12:25:03] <f[x]> или ты напрямую grub.cfg ковыряешь?
[12:25:41] <f[x]> "использование lfs - одно из самых замечательных качеств, которое я очень ценю в своих друзьях"
[12:25:43] <f[x]> (с)
[12:26:19] <komar> f[x]: exactly.
[12:26:37] <f[x]> какой-то ты непослидовный. друзей разбираться заставляешь, а сам дебиан юзаешь. слабак.
[12:26:42] <komar> Что мне убунтоид новго расскажет? Как он новую темку на юнити натянул?
[12:27:04] <f[x]> откуда в треде убунтоиды появились?
[12:27:39] <f[x]> расскажи всё таки что именно в конфиге груба ты правил что вызвало такие мета-ужасы?
[12:29:18] <oln> %)
[12:45:29] Typhon вошёл(а) в комнату
[13:23:16] gds вышел(а) из комнаты: Replaced by new connection
[13:23:18] gds вошёл(а) в комнату
[14:53:00] Kakadu вошёл(а) в комнату
[15:16:10] f[x] вышел(а) из комнаты
[15:59:11] bobry вошёл(а) в комнату
[15:59:57] oln вышел(а) из комнаты
[16:12:15] <bobry> а кто-нибудь графики в камло рисовал?
[16:12:22] <komar> Йя.
[16:12:35] <bobry> gnuplotом?
[16:12:38] <komar> Посему рекомендую тебе сливать данные из камла и запихивать их в гнуплот.
[16:12:52] <komar> Ты так быстрее сделаешь что тебе надо.
[16:12:56] <bobry> я просто обдумываю идею grammar of graphics для камла
[16:12:58] <komar> Но мне уже поздно.
[16:13:00] <bobry> чтобы рисовать их по человечески
[16:13:06] <komar> О, давай.
[16:13:09] <bobry> но сначала хотелось бы посмотреть на то шо есть
[16:13:21] <komar> ocaml-gnuplot
[16:13:30] <bobry> и всё? никаких велосипедов?
[16:13:47] <Kakadu> а что за идея?
[16:13:57] <komar> Вот это непотребство им нарисовано: http://komar.psto.net/tettno
[16:14:54] <bobry> что есть "граматика графиков", в кратце: мужыки говорят как можно любой график разложить на фиксированное множество компонент и предлагают свой язык для описания всего этого добра
[16:15:02] <komar> Еще можно gtk подергать, например.
[16:15:06] <bobry> есть человечная реализация того же самого в R
[16:15:13] <bobry> и пилится что-то похожее для Python
[16:15:43] <bobry> примерный синтаксис ggplot(data = people, aes(x = weight, y = height) + geom_point()
[16:15:58] <bobry> нарисуем точечный график где по x отложен вес людей, а по y высота
[16:16:16] <bobry> это всё дело отлично обобщает нехилую долю возможных визуализаций
[16:16:21] <komar> Ну и нахрена оно надо?
[16:16:27] <bobry> удобно рисовать же
[16:16:36] <komar> А гнуплотом прямо не то же самое делается, да?
[16:16:38] <bobry> стройно, красиво, работает
[16:16:46] <komar> и ВЕЛОСИПЕД
[16:16:55] <bobry> ты уверен что до конца понял идею?
[16:17:14] <komar> Нет, но я до конца понял подстроку после «примерный синтакси»
[16:17:18] <komar>
[16:17:27] <bobry> это простейший пример
[16:17:46] <bobry> здесь их побольше http://docs.ggplot2.org/current/
[16:17:57] <komar> Короче, пойду-ка я отсюда.
[16:19:29] <komar> Хотя нет, не пойду: по ссылке обычная либа с апи на все случаи жизни; никаких новых концепций и ничего интересного.
[16:19:32] <komar> Теперь пойду.
[16:19:43] <bobry> быстро же ты разобрался :)
[16:21:50] <Kakadu> Т.е. ты хочешь DSL который будет а ля синтаксис gnuplot?
[16:22:27] <bobry> он не будет а ля синтаксис gnuplot
[16:22:31] <bobry> но да, DSL
[16:23:28] <komar> Сейчас функции модно диэсэлями называть?
[16:25:28] <bobry> komar: давно уже модно
[16:28:28] <komar> Вообще, я бы не отказался от _низкоуровневого_ движка для рисования графиков.
[16:28:45] <bobry> cairo называется?
[16:28:54] <komar> Чтобы при необходимости нарисовать фигню с хитрыми осями или еще какой-нибудь сранью я не впадал бы в транс.
[16:29:01] <komar> bobry: слишком уж низкоуровнево.
[16:29:38] <komar> Каира уже есть, но ей рисовать совсем грустно.
[16:29:58] <komar> Все хреновины для рисования графиков это «мы сделали решения для 1000 случаев!»
[16:30:08] <komar> А у меня всегда 1001-й.
[16:30:49] <bobry> что есть с хитрыми осями?
[16:30:53] <bobry> можно конкретный пример
[16:31:10] <komar> Попозже.
[16:31:37] <bobry> буду ждать :)
[16:52:19] <ADEpt> А зачем, если есть ggplot?
[16:52:27] <bobry> так он для R
[16:52:35] <bobry> не кошерно же
[16:52:36] <ADEpt> кроме того, для узкоспециальных случаев универсальное решение будет хуже (см. timeplotters)
[16:52:53] <bobry> видел ага, будет
[16:53:16] <bobry> на самом деле мне скорее интересно — можно ли поиметь что-то аналогичное ggplot в статически типизируемом языке
[16:53:32] <ADEpt> А, ну если "интересно", то тогда другое дело :)
[16:57:12] gds вышел(а) из комнаты
[17:08:38] gds вошёл(а) в комнату
[17:19:19] oln вошёл(а) в комнату
[17:42:01] bobry вышел(а) из комнаты
[17:42:46] bobry вошёл(а) в комнату
[18:01:34] bobry вышел(а) из комнаты
[18:01:45] bobry вошёл(а) в комнату
[18:09:15] <bobry> komar: так чего, скажешь пример нетривиального графика?
[18:10:25] <komar> Нет, у меня рабство. :(
[18:11:20] <bobry> рабство?
[18:11:38] <komar> Работа.
[18:12:04] <komar> Вспоминать, чего я там хотел нарисовать и не осилил — сделает у меня переключение контекста и копание с сорцах.
[18:12:13] <bobry> окей
[18:12:59] <bobry> пока что вопрос такой — есть для камло аналог tables? http://github.com/ekmett/tables или же по простому in-memory табличек с возможностью делать к ним sql-like запросы
[18:13:05] <bobry> в R оно же обзывается data frame
[18:13:56] <bobry> уверен gds вполне мог такое наваять :)
[18:20:34] <gds> bobry: ровно такое, как ты показал -- не смог бы.  Но зачем это тебе?  Бери sqlite, выкручивай кеш на максимум (если там настраивается), и наслаждайся.
[18:21:52] <gds> да и вообще, in-memory databases, по которым есть смысл делать нетривиальные запросы, редко нужны (лично мне).
[18:23:15] <gds> а хотя, если чисто in-memory, то сначала mmap, потом уже sqlite на нём (если он умеет брать файловый дескриптор для создания бд или если можно как-то поименовать то, что mmapped), и вперде.
[18:23:29] <ADEpt> есть биндинги к sqlite, указывай в качестве базы ":memory:" и вперед
[18:23:45] <gds> о, ещё лучше.
[18:23:46] <ADEpt> это будет ровно то, что gds советует в последнем сообщении
[18:26:16] <ADEpt> оно даже работает, и работает быстро, но это будет оверкил, как мне кажется
[18:27:11] <gds> если хитрые условия выборки, да и всякие группировки, да и желание периодически восстанавливаться с диска и сливать на диск, то вполне таки решение.
[18:28:18] <gds> (про диск, хотя, не уверен -- позволяет ли оно выполнить один dml-оператор супротив двух базок, in-memory и on-disk?)
[18:30:17] <ADEpt> там есть что-то типа "перелить базу А в базу Б", то есть можно работать в памяти,а потом сливаться на диск, и наоборот
[18:30:45] <gds> вот и круто.
[18:32:47] bobry вышел(а) из комнаты
[18:39:24] tilarids вошёл(а) в комнату
[18:39:39] tilarids вышел(а) из комнаты
[18:40:16] tilarids вошёл(а) в комнату
[18:40:45] tilarids вышел(а) из комнаты
[18:41:38] tilarids вошёл(а) в комнату
[18:41:53] tilarids вышел(а) из комнаты
[18:45:11] tilarids вошёл(а) в комнату
[18:45:26] tilarids вышел(а) из комнаты
[18:48:02] zinid вышел(а) из комнаты
[18:53:09] tilarids вошёл(а) в комнату
[18:53:24] tilarids вышел(а) из комнаты
[18:54:03] tilarids вошёл(а) в комнату
[18:54:18] tilarids вышел(а) из комнаты
[18:55:21] tilarids вошёл(а) в комнату
[18:55:36] tilarids вышел(а) из комнаты
[18:56:55] bobry вошёл(а) в комнату
[18:57:08] tilarids вошёл(а) в комнату
[18:57:23] tilarids вышел(а) из комнаты
[18:58:23] tilarids вошёл(а) в комнату
[18:58:38] tilarids вышел(а) из комнаты
[18:59:20] <bobry> gds: так речь о другом, есть у меня например csv, хочется как-то его отфильтровать и график забабахать
[18:59:30] <bobry> sqlite тут вроде бы overkill
[19:00:02] <komar> List.sort
[19:00:15] <komar> List.filter
[19:00:16] <gds> komar: как всегда мимо!  List.filter же!1111
[19:00:23] <bobry> так не об этом речь
[19:00:35] <bobry> хочеться чтобы синтаксически это кошерно выражалось
[19:00:48] <bobry> /me избалован Rом
[19:01:20] komar изнасилован ruby и не хочет вообще никакого синтаксического счастья.
[19:02:04] <gds> ну будет тебе filter ("col1" =- "123" &&& "col5" =- "qwe"), спасёт?
[19:02:14] tilarids вошёл(а) в комнату
[19:02:29] tilarids вышел(а) из комнаты
[19:02:29] <bobry> ну приятнее же :)
[19:03:05] <bobry> правда ровно так не будет, ибо хочется чтобы это всё ещё и с типами
[19:14:09] <gds> что собрался делать при ошибке типов?  ждёшь число, в csv строка.
[19:16:08] <bobry> exception
[19:19:55] <gds> схему csv собираешься описывать в коде?
[19:21:12] <bobry> угу, в идеале хотелось бы что-то вроде Table (Int :,: String :,: Double)
[19:21:22] <bobry> но в камле вроде бы нет type operators
[19:21:49] <gds> а только на type operators и не проживёшь, а вот другие операторы вполне есть.
[19:22:14] <gds> в общем, если реально займёшься этим, я могу прикинуть общую идею.
[19:22:34] <bobry> я сначала в cairo потыкаю, мне же оно нужно для графиков
[19:23:15] <bobry> кстати, замену camlp4 ещё не запили? я в последнее время не читал caml-list, помню там была движуха на эту тему
[19:23:23] <gds> кстати, если тебе приемлемо "описать схему в coq и экстрактить результаты в окамл", то получилось бы гораздо красивее, чем на чистом окамле.
[19:24:11] <bobry> я coq ни разу не трогал, не уверен что это приемлимо
[19:24:18] <bobry> а за счет чего красивее получилось бы?
[19:26:57] <gds> coq только для описания схемы csv.  считай, dsl такой.  но его надо иметь там, где компилируешь камлопрограмму.
красивее из-за того, что типы там -- первоклассная штука.  То есть, имея список типов, можно было бы подумать как про генерилки csv->камло, так и про типизацию того filter, который будет собственно фильтровать.
[19:27:40] <bobry> хммм, звучит соблазнительно, но я пожалуй начну таки с cairo, а потом уже вернусь к табличкам
[19:28:21] <gds> это да, лучше с низом разберись, cairo не слишком высокоуровневый.
[19:28:21] komar вышел(а) из комнаты
[19:29:26] <bobry> а вот ещё вопрос — можно как нибудь в камло поиметь что-то вроде Num? тобишь абстракцию над числовыми типами
[19:29:32] <bobry> явно запихивать всё в функтор не хочется
[19:29:38] <bobry> мб есть какие-то ещё варианты?
[19:29:53] oln вышел(а) из комнаты
[19:29:54] <gds> над всеми числовыми абстракцию делать -- бессмысленно.
[19:29:59] <gds> они очень разные.
[19:30:43] <bobry> хм, ну например я умею считать гистограмму для float'ов, хочется чтобы для intов оно тоже работало
[19:32:17] <gds> 1. сложение на плавучке некоммутативно -- ты точно правильно суммируешь плавучку, чтобы было с минимумом потерь точности?  2. int'ы переполняются -- уверен, что будешь учитывать в общем коде их переполнение, в том числе, в коде для плавучки?
[19:32:24] oln вошёл(а) в комнату
[19:32:41] <gds> тьфуты, неассоциативно.
[19:34:23] <bobry> ох-ах, не учитываю, как это вообще можно учитывать?
[19:37:28] <gds> первое -- грамотным суммированием.  второе -- либо исключениями при переполнении (где-то была замена + - * / , от леройчега даже, вроде в камловики), либо просто проверками, либо преобразованиями в другие типы данных (Num.t), либо примитивной ручной эмуляцией плавучки, с потерей точности, конечно.
[19:38:30] <bobry> а что есть грамотное суммирование?
[19:39:08] <bobry> ну т. е. понятно чего мы хотим, но не понятно как это получить
[19:42:57] <gds> пока опишу, погляди, что поисковики дают по "ocaml zarith"
[19:49:44] <gds> грамотное суммирование -- то, при котором почти не теряется точность.  Например, если будет "стопиццот + 1 + 1 + ... ещё стопиццот-2 раз по 1" вычислено слева-направо, результат будет стопиццот.  А если справа-налево, то где-то между стопиццот и 2*стопиццот.
Наивное суммирование -- всё сложить в память, всегда поддерживать два минимальных элемента, их складывать.  Это долго, конечно.  Более интересное, но не уверен, что просто реализуемое -- иметь в памяти массив по количеству имеющихся экспонент у плавучки, и дальше мутить в рамках него, не теряя точности: складывать каждое новое число с тем элементом массива, который имеет такую же экспоненту.  А то и чуть похитрее.  Но надо анализировать.  А это лень.  Как минимум потому, что, жопой чую, есть тонны папиров на эту тему.
[19:50:03] <ADEpt> в Core есть Numeric.t поверх Zarith
[19:50:52] <ADEpt> который использует более простое внутреннее представление, если есть возможность
[19:51:02] <ADEpt> А, вру, еще нет :)
[19:51:08] <ADEpt> Не вошло в публичный релиз
[19:51:12] <ADEpt> сорри
[19:51:14] bobry вышел(а) из комнаты
[19:51:52] <gds> ADEpt: вы там публикуете документацию в хтмл?
[19:52:23] <gds> документацию по api этоговашего core, имею ввиду.
[19:54:05] <gds> (чувствую, что пора пойти отдохнуть, судя по исходящему от меня косноязычию.)
[19:55:10] <ADEpt> gds: ага
[19:55:27] <ADEpt> gds: но так, в режиме best effort
[19:55:44] <ADEpt> gds: для внутреннего использования оно не очень сильно надо, т.к. есть ocamlspotter
[19:55:59] <ADEpt> плюс, местами получается очень криво из-за косяков ocamldoc
[19:56:03] bobry вошёл(а) в комнату
[20:06:37] <bobry> gds: так zarith вроде бы для длинных интов?
[20:07:17] <bobry> gds: мне вот интересно, кто-нибудь реально заморачивается по-поводу потери точности и выбирает порядок операций?
[20:07:30] <gds> а вроде для разных.  А вот Num.Чототам -- для длинных.
[20:08:01] <bobry> "The Zarith library implements arithmetic and logical operations over arbitrary-precision integers."
[20:08:15] <bobry> ну и внутрях там GMP, ровно то шо х-ль юзает
[20:09:22] <gds> я кое-где заморачивался, но было надо мало суммировать, поэтому наивно сделал.  А вообще -- хз, я просто показываю проблему.
[20:10:46] <bobry> проблема понятна, да
[20:12:40] <gds> а в zarith -- не gmp.  Единственное, что связано с gmp -- "added zarith.h: conversion between GMP and Zarith for C libraries"
[20:15:51] <gds> а нет, gmp.  Почему же мне казалось, что они делают разные трюки с окамловским рантаймом?  Всё, теперь точно ждите меня завтра.
[20:15:51] <bobry> хм, а в README написано что  оно
[20:15:58] <bobry> а что за странный файлика .mlp?
[20:16:05] <bobry> ml prim?
[20:25:10] Typhon вышел(а) из комнаты
[20:34:34] komar вошёл(а) в комнату
[20:38:52] bobry вышел(а) из комнаты
[20:49:56] tilarids вошёл(а) в комнату
[20:51:41] <oln> это, а что такое этот зигохистоморфный препроморфизм?
[20:54:25] <aleksey> gds: на всякий случай отмечу, что если есть массив неотрицательных чисел, и надо их сложить всё время выбирая наименьшие слагаемые, то это легко сделать за O(n) + время сортировки
[20:55:24] Kakadu вышел(а) из комнаты
[21:42:51] tilarids вышел(а) из комнаты
[21:43:23] tilarids вошёл(а) в комнату
[22:44:04] tilarids вышел(а) из комнаты: Computer went to sleep
[22:58:18] tilarids вошёл(а) в комнату
[23:04:33] tilarids вышел(а) из комнаты: Computer went to sleep
[23:21:47] oln вышел(а) из комнаты
[23:26:11] ermine вышел(а) из комнаты
[23:29:06] bobry вошёл(а) в комнату
[23:30:33] <bobry> aleksey: а почему неотрицательных? в чем беда со знаком
[23:31:00] <aleksey> тогда надо честную приоритетную очередь делать
[23:31:24] <aleksey> в результате тоже будет O(n log n), но с большей константой
[23:33:40] <aleksey> ну и к тому же могут быть числа типа 1.000000001 и -1, от сложения которых получится маленькое число, и возможно другой порядок будет давать меньшую погрешность
[23:57:00] bobry вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!