Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 2 января 2012< ^ >
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:10:26] Typhon вошёл(а) в комнату
[00:11:15] Typhon вышел(а) из комнаты
[00:13:36] Typhon вошёл(а) в комнату
[00:15:32] gds вышел(а) из комнаты
[00:16:19] Typhon вошёл(а) в комнату
[00:21:48] Typhon вышел(а) из комнаты
[01:48:10] komar вышел(а) из комнаты
[01:57:33] savikov вышел(а) из комнаты: QIP 2010: Спокойное общение
[04:40:09] Typhon вошёл(а) в комнату
[04:58:44] letrec вошёл(а) в комнату
[06:17:04] Typhon вышел(а) из комнаты
[07:05:04] Typhon вышел(а) из комнаты
[07:15:23] komar вошёл(а) в комнату
[11:14:18] Kakadu вошёл(а) в комнату
[11:21:26] gds вошёл(а) в комнату
[11:42:06] letrec вышел(а) из комнаты
[11:42:32] letrec вошёл(а) в комнату
[11:48:23] ftrvxmtrx вошёл(а) в комнату
[11:51:41] ftrvxmtrx вышел(а) из комнаты
[11:55:33] ftrvxmtrx вошёл(а) в комнату
[13:29:49] <letrec> http://ocaml.paste.pro/5139224 что за херь?
[13:30:12] <letrec> коммент ocamlbuild' у не нравится
[13:33:58] <letrec> вот сам код http://ocaml.paste.pro/5139225
[13:34:16] <letrec> ему *) на последней строке не нравится?
[13:36:37] <ftrvxmtrx> попробуй \<code\>
[14:11:44] <gds> срань какая-то.  не могу в Makefile указать, что всегда хочу ставить оазисом проект в "туда, куда ocamlc -where указывает", а не в /usr/local/bin.
[14:16:46] Typhon вошёл(а) в комнату
[14:17:22] Typhon вышел(а) из комнаты: Replaced by new connection
[14:17:42] Typhon вошёл(а) в комнату
[14:26:00] Typhon вышел(а) из комнаты: Replaced by new connection
[14:26:20] Typhon вошёл(а) в комнату
[14:32:29] Typhon вышел(а) из комнаты: Replaced by new connection
[14:32:49] Typhon вошёл(а) в комнату
[14:34:46] Typhon вышел(а) из комнаты
[14:35:07] Typhon вошёл(а) в комнату
[14:36:04] <gds> Typhon: нет у меня френдфид-аккаунта, как и твитора и мордокниги, поэтому там откаментить сложно.  а так -- может кому-нибудь тоже будет интересно, что у zaz есть ещё хорошие песни, кроме той известной.  например, красивая-лирическая "port coton", да и вообще где-то пол-альбома хороши сходу.
[14:37:14] <Typhon> да, я весь альбом гонял вчера полночи — чудо-девица :-)
[14:37:46] <gds> факт.  есть же хорошие хвранцузы, не то что инриа.
[14:44:49] Typhon вышел(а) из комнаты
[14:44:51] <letrec> у кого-нибудь camomile 0.8.3 установлен?
[14:45:12] Typhon вошёл(а) в комнату
[14:45:30] <gds> только 0.8.2 сходу.
[14:45:58] <letrec> чем ставил?
[14:46:35] <gds> overbld :)
[14:47:21] <letrec> у тебя charmaps с % в имени файла не посоздавались?
[14:47:57] <letrec> типо ISO_5427%3A1981.mar
[14:48:24] <gds> натурально, $ ls ISO_54*
ISO_5427%3A1981.mar  ISO_5427.mar         ISO_5428.mar
ISO_5427-EXT.mar     ISO_5428%3A1980.mar
[14:48:42] <letrec> хня какая-то
[14:49:41] <gds> надо же как-то двоеточие писать в имена, вот так и пишет.
[14:49:58] <letrec> а при устновке такого
Fatal error: exception Failure("Broken entry: <NUL> /x00/x00 NULL (NUL)")
не вылетало?
[14:50:31] <letrec> ygrek это уже им репортил
[14:50:32] <gds> вроде нет, фатальные ошибки у меня прерывают всё.
[14:50:36] <letrec> двоеточие
[14:51:07] <letrec> а там ошибки не у тебя будут, а в каком-то генераторе из пакета
[14:51:24] <letrec> я им баг зарепортил
[14:51:39] <gds> если при билде (при генерации), то считай, что "у меня".  вроде не было.  но обрати внимание, 0.8.2 таки у меня.
[14:52:06] <letrec> судя по changelog должно быть пофиг
[14:53:33] <letrec> я пытался принести пользу ocaml community - проапгрейдил camomile в godi, а в их мэйллисте не отвечают, чтобы лоступ к svn дать
[14:56:58] <gds> я гердушке даже баги ocamlnet слал, ни ответа, ни привета.
[14:59:35] Typhon вышел(а) из комнаты
[15:00:34] <letrec> видимо надо эксплойт к их svn искать :)
[15:01:23] <gds> слишком тру, они ниасилят.
[15:01:52] Typhon вошёл(а) в комнату
[15:12:59] <letrec> если в коде http://ocaml.paste.pro/5139225 убрать коммент, то всё компилится, причёт это уже раз чинили судя по https://forge.ocamlcore.org/plugins/scmdarcs/cgi-bin/darcsweb.cgi?r=zed/zed;a=commitdiff;h=20110903094217-c41ad-e62a4940d43055ecdd65dab367035163654c4d54.gz
[15:13:23] <letrec> есть внятная дока по комментированию в ocamlbuild?
[15:14:38] Typhon вышел(а) из комнаты
[15:16:32] <gds> letrec: всё-таки в ocamldoc.  Может, попробовать документацию на ocamldoc почитать?  По идее, в официальном мануле должна быть глава про него.
[15:42:24] <letrec> какой из overbld правильный? https://sourceforge.net/projects/overbld/ или http://forge.ocamlcore.org/projects/overbld/?
[15:43:54] <gds> letrec: на sourceforge.   если для венды, есть бинарники.  если для юниксов, бери из репки.
[15:44:34] <gds> репка -- http://overbld.hg.sourceforge.net/hgweb/overbld/overbld/
[15:45:39] <gds> letrec: сообщи, что хочешь с оверблд сделать, может у меня будут какие-нибудь хорошие идеи.
[15:58:47] <gds> bobry: жыв?
[16:09:10] <letrec> gds: я хочу его собрать под линухом и посмотреть, что-то меня все эти godi и odb вместе с пакетами убунты утомили
[16:12:48] <gds> letrec: но учти, пакетов не сильно много, вот они: http://overbld.hg.sourceforge.net/hgweb/overbld/overbld/file/9fc3d4f2b5c9/src
[16:16:11] <gds> letrec: рекомендую такую раскладку: создай директорию для этого дела (у меня -- ~/dev/ovm, пофиг, но лучше отдельную), в её поддиректорию overbld склонируй репку (можно hg clone -u null откуда куда), из репки содержимое ovm-root/* скопируй в эту отдельную директорию, посмотри bld.sh на предмет путей и прочего (например, --without-gui может пригодится в configure), и дальше запускай "./bld.sh workdir", чтобы осталась директория с исходниками на случай разборок каких.
[16:17:22] <gds> letrec: но это создаст полное окружение, в том числе с компилятором.  если это не хочется / недопустимо и если пакетов немного, можно взять новейшую разработку камлунити -- барбру, которая будет локально компилировать всё нужное, указанное в конфиге.
[16:28:57] Typhon вошёл(а) в комнату
[16:30:17] <gds> Typhon: начал таки туториал по итератам.  Ты был одним из тех, кто был бы не прочь почитать.  Пока вот: https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt .  Что непонятно, что добавить, что уточнить, что описать следующим?
[16:31:09] Typhon вышел(а) из комнаты: Replaced by new connection
[16:31:29] Typhon вошёл(а) в комнату
[16:31:41] <gds> кстати, вопрос относится ко всем, кому интересна эта тема.
[16:32:08] <Typhon> о, через пару часов прочту обязательно и накатаю фидбэк!
[16:32:54] <gds> но там мало пока.
[16:33:13] <gds> интересны "линии развития повествования".
[16:36:05] <Typhon> а, раз мало — прочту сейчас
[16:37:09] <Typhon> сразу: в преимуществах хотелось бы видеть примеры. типа "позволяют гарантировать много фактов…" — кусок кода, демонстрирующий
[16:37:25] savikov вошёл(а) в комнату
[16:37:32] <savikov> всем хай
[16:39:42] <gds> Typhon: вроде это просто "список фактов", а там, пониже, будет конкретика.  Почти в каждом энумерторе/энумерате будет заметка о том, что данный буфер только один, а то и, более того, переиспользуется буфер внешнего потока.
[16:40:15] <savikov> gds: почему я не могу обращаться к функциям из другого модуля в Ocaml light? 0о
[16:40:27] <savikov> >let rec size l = if l = [] then 0 else 1+ size (List.tl l);;
>                                                ^^^^^^^
The label tl is unbound.
[16:42:46] <gds> Typhon: разве что добавлю "смотрите ниже, там будет продемонстрировано, какие факты о ресурсах гарантируются итератами".
[16:44:01] <gds> savikov: 1. не пиши такой код.  2. не используй caml light.
[17:22:27] betastat вошёл(а) в комнату
[17:23:38] betastat вышел(а) из комнаты: qutIM : Jabber plugin
[17:43:57] <letrec> gds: по поводу итератов присоединяюсь к запросу на примеры
[17:44:05] <letrec> а то слишком абстрактно
[17:45:29] <letrec> ещё вопрос есть: тупо из файла строки читать есть смысл при помощи итератов помимо гарантированного контроля ресурсов?
[17:46:00] <gds> letrec: как раз примеры и их тщательный разбор являются целью туториала.  И запрашиваю фидбэк -- в какую сторону рулить туториал?  Сейчас закоммичу написанное с того момента, как спрашивал, дам ссылку в чат.
[17:48:09] <gds> letrec: смотря какие цели про чтение строк из файла.  что дальше с ними будет делаться, например.  Если обработка несложная, нет никаких хитрожопых фокусов, проще input_line_opt (тупой враппер над input_line), а то и https://github.com/camlunity/barbra/blob/master/src/ext/filew.mli
[17:49:00] <gds> опять же, про примеры -- нужно какой-то несложный пример.  у олега киселёва про new lines сложно, проект про bson ещё сложнее.
[17:49:48] <gds> letrec: а если хочешь потом читать не из файла, а из любого источника строки, или если хочешь перекодировать их предварительно (например, перегнать в юникод из utf8-кодировки), то итераты уже начинают иметь смысл.
[18:15:53] <gds> дописал в туториал по итератам кое-что про манатки: https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt
[18:22:33] <gds> кстати, если я там где-то прогоняю (как стилистически, так и по фактам), сразу говорите.  а если кто хочет, сразу коммитьте в репку, только сообщите, чтобы я успел права выдать.
[18:24:20] Typhon вышел(а) из комнаты
[18:29:58] <Kakadu> gds: а как традиционно определяется >>= через bind?
[18:32:16] <Kakadu> просто если let (>>=) = bind, то ты тут
https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/b233a3abd33c/input.txt#cl-116
наврал
[18:34:40] <Kakadu> "ловко решается вопрос присвоения промежуточным выражениям идентификаторов языка" я раза с третьего распарсил
[18:35:23] <Kakadu> ааа, про bind ты потом говоришь, ясно.
[18:37:52] <gds> Kakadu: про ">>=" я не говорил, когда определял bind.  Разобрался точно?
[18:38:09] <Kakadu> да, там всё норм
[18:38:48] <gds> то, что люди считают, что оператор ">>=" это монадный bind, это ошибка людей.  ничего не могу с этим поделать.
про фразу -- разобью её, да, кривая она.
[18:45:34] <gds> пофиксил.
[18:52:45] <Kakadu> угу
[19:15:30] Typhon вошёл(а) в комнату
[19:17:34] <letrec> gds: можешь написать чем итераты лучше (если лучше) стримов?
[19:18:19] <letrec> асинхронщина к ним как-то может быть пристёгнута?
[19:19:04] <gds> letrec: сейчас опишу, покажу ссылку.
[19:26:23] <letrec> ура, мне Герд дал доступ к svn! ща накомичу :)
[19:26:25] ak79 вошёл(а) в комнату
[19:27:37] <letrec> видно занят был отмечнием нового года
[19:29:15] ak79 вышел(а) из комнаты
[19:31:01] <gds> letrec: https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt#cl-46
[19:32:21] <letrec> спасибо, а про связь с асинхронщиной можешь прокомментировать?
[19:34:14] <gds> связь итератов или Stream?
[19:48:35] <letrec> связь итератов и асинхронного получения данных
[19:48:45] <letrec> если есть
[19:51:06] <gds> есть, ща.
[20:02:22] <gds> letrec: https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt#cl-55
[20:04:53] <letrec> под "построены поверх базовой монады" имеется в виду, что они абстрагированы от конкретной монады?
[20:05:29] <letrec> т.е. они монадой параметризованы?
[20:06:01] <letrec> точнее интерфейсом монады
[20:06:36] <gds> от конкретной монады -- абстрагированы.  В библиотеке это функтор, берущий монаду (для простоты примеров олега там не просто монада и не просто монада-с-ошибками, там ещё чуток ввода-вывода, но это некритично).
[20:06:40] <gds> это тоже опишу.
[20:07:58] <letrec> т.е. один и тот же код в зависимости от того, какой монадой параметризован может выполняться как синхронно так и асинхронно?
[20:10:24] <gds> именно так.  Но это если данный код тоже засунуть внутрь функтора, требующего IO-подобную монаду.
[20:10:29] savikov вышел(а) из комнаты: QIP 2010: Спокойное общение
[20:13:00] <gds> про функтор описал тут: https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt#cl-44
[20:15:26] <gds> итак, про что ещё уточнить, или про что бы следующим написать?
[20:15:56] <gds> чую, надо про саму "машинерию" писать уже, а то воды налил -- уу, выше крыши.
[20:19:09] <letrec> про машинерию с хотя бы минимальными примерами было бы круто, а то вода тяжёловато идёт порожняком
[20:20:44] <gds> да всё будет, понятное дело.  настолько много, что кому-то будет даже всухомятку.  ну, оригинальные мануалы все видели, многие даже пытались читать.
вода тут нужна для плавного ввода читателя в контекст обсуждения.
[20:28:42] savikov вошёл(а) в комнату
[20:28:45] <savikov> # apply_fun_list 9 [(*) 1, (*) 2, (*) 3, (*) 4, (*) 5];;
Warning C: this is the start of a comment.
[20:28:59] <savikov> val apply_fun_list : 'a -> ('a -> 'b) list -> 'b list = <fun>
[20:40:48] <bobry> gds: чегохотел?
[20:41:38] <gds> bobry: туториал по итератам!  пруф-ридить11111
[20:42:02] <gds> вроде тоже интересовался, вот и хотел узнать, надо ли ещё.
[20:42:14] <bobry> ага-ага, щас почитаю, мерси
[20:42:16] savikov вышел(а) из комнаты: QIP 2010: Спокойное общение
[20:46:50] ftrvxmtrx вышел(а) из комнаты
[21:00:35] <bobry> https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt#cl-166 -- можно пояснить почему тут fmap?
[21:02:03] <gds> fmap тут при том, что монаду можно определить через fmap и ещё через какие-то функции (сходу не скажу, какие, в случае fmap).  Но тоже можно.
[21:02:24] <bobry> ну любая монада это функтор, и fmap == return
[21:02:35] <bobry> тьфу ты
[21:02:40] <bobry> pure == return
[21:02:57] <bobry> а return выражается через fmap + pure
[21:03:28] <gds> это да, но в применении к монадам нет pure, да тут и не нужно.
[21:36:00] letrec вышел(а) из комнаты
[21:44:06] <gds> ближе к "машинерии", уже реальные типы появились, "потоки": https://bitbucket.org/gds/ocaml-iteratees-tutorial-rus/src/tip/input.txt#cl-251
[21:49:25] arhibot вошёл(а) в комнату
[21:49:44] Typhon вышел(а) из комнаты
[21:49:55] arhibot вышел(а) из комнаты
[21:53:26] ygrek вошёл(а) в комнату
[21:57:42] <bobry> gds: а не хочешь в каком нибудь markup формате это? шобы читать легче было?
[21:57:52] <bobry> gh markdown например, он даже код хайлайтить будет правильно
[21:58:05] <gds> bobry: нет, так как он не поддерживает раскидку кода по разным файлам.
[21:58:23] <bobry> ну тогда sphinx + res
[21:58:26] <bobry> *rest
[21:58:30] <bobry> он умеет разные файлы
[21:58:36] <bobry> sphinx.pocoo.org/tutorial.html
[21:59:14] <gds> да проще сделаю.  исходник (который сейчас читаете) будет генерить в html и в ml, а в html уже как-нибудь разберусь.
[22:00:05] <bobry> gds: а почему применительно к монадам нет pure? может ты про fmap?
[22:01:05] <gds> потому что в монадах нет pure чисто "терминологически".  есть return, иногда его называют unit.
[22:01:40] <bobry> мм, поясни? (если не сложно), чисто терминологически return эквивалентен pure
[22:03:10] <gds> если монаду рассматривать как аппликативный функтор, то её return обязан соответствовать pure этого функтора.  но в монадах нет pure, и не всякую монаду нужно рассматривать как апп.функтор.  я, например, в документации не рассматриваю монады как апп.функторы.
[22:12:28] <gds> приведу более контрастный пример.  целые числа могут представлять собой коды символов.  у символов определена операция "перевести в верхний регистр".  но это не значит, что на целых числах разумно тоже определять операцию "перевести в верхний регистр".
[22:27:54] komar вышел(а) из комнаты
[22:51:20] ftrvxmtrx вошёл(а) в комнату
[22:59:32] ftrvxmtrx вышел(а) из комнаты
[23:00:19] ftrvxmtrx вошёл(а) в комнату
[23:19:57] komar вошёл(а) в комнату
[23:29:05] <Kakadu> коммент от телемы мне напоминает столлмана с его исправлениями linux на GNU/Linux
[23:31:48] <Kakadu> gds: ты наваяешь примеров парсеров на итератах? чтобы итераты парсили, а енумераторы были похожи на лексеры?
[23:32:01] <gds> Kakadu: какой камент телемки?
[23:32:11] <Kakadu> на барбру
[23:32:20] <bobry> Kakadu: wher?
[23:32:23] <gds> процитируй, если не сложно.
[23:32:34] <Kakadu> > One thing not done here is to distinguish Oasis-db from odb. Oasis-db is an on-line database of packages, mostly using oasis for package metadata. odb is a simple ocaml program similar to barbra that originally used only Oasis-db as a source for package metadata and tarballs. With the help of a packages file that provides package metadata (like dependencies, where to download, type of package), odb is able to install from local directories, local tarballs, as well as git, svn, cvs, hg and darcs repositories. odb is < 500 lines of ocaml in a single file, designed to be run without being compiled, and depending only on ocaml and findlib, so I'd count it as pretty light-weight.
[23:34:15] <bobry> Kakadu: что именно тебя смущает?
[23:34:38] <Kakadu> просто на столлмана похоже
[23:35:30] <Kakadu> bobry: а ты не хочешь попилить lablqt?) а то мне что-то уже не сильно хочется сейчас.. =)
[23:35:51] <bobry> ну :) это вроде совсем не по моей части
[23:36:01] <Kakadu> bobry: или хотя бы потыкать носом про что документацию пописать на будущее
[23:36:14] <Kakadu> просто я понял что надо теперь с ней сделать, но делать совсем не хочется
[23:37:49] <gds> Kakadu: про итераты -- пример будет, только не знаю, какой.  Скорее, лексить будут энумераты, которые берут поток char'ов или других символов, а кормить итерат будут токенами.  Например, как в моей "literate programming", http://paste.in.ua/3565/ , где энумератор -- enum_file_direct, токенизирует энумерат In_text_it.input_token и дальше через те же энумераты всё скармливается конечному итерату I.reduce_ext tree_monoid_res, который собственно строит дерево.
[23:40:49] <gds> кстати, важное.
пишите комментарии к комментариям.
через полтора месяца непонятно, вдумываюсь, чешу репу, чуть ли не матом ругаюсь.  (хоть речь не совсем про код, но всё же, всё же.)
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!