Home
Objective Caml
ocaml@conference.jabber.ru
Пятница, 27 июля 2012< ^ >
f[x] установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | 4.00.0 уже таки да, см. kamlo_wiki/OCamlChanges
Конфигурация комнаты
Участники комнаты

GMT+4
[00:03:58] <ermine> ну что, все уже обновили камло?
[00:24:59] Sun][ вышел(а) из комнаты
[00:25:02] Sun][ вошёл(а) в комнату
[00:56:40] Sun][ вышел(а) из комнаты
[01:12:15] Typhon вошёл(а) в комнату
[01:23:23] ftrvxmtrx вошёл(а) в комнату
[01:29:42] ermine вышел(а) из комнаты
[02:10:20] Kakadu вышел(а) из комнаты
[03:22:51] ftrvxmtrx вышел(а) из комнаты
[03:26:40] ftrvxmtrx вошёл(а) в комнату
[03:50:08] letrec вошёл(а) в комнату
[04:33:10] Typhon вышел(а) из комнаты
[04:48:43] letrec вышел(а) из комнаты
[09:24:53] ermine вошёл(а) в комнату
[10:47:21] ftrvxmtrx вышел(а) из комнаты
[11:09:30] komar вышел(а) из комнаты: Replaced by new connection
[11:09:31] komar вошёл(а) в комнату
[11:18:19] Sun][ вошёл(а) в комнату
[11:21:10] ftrvxmtrx вошёл(а) в комнату
[11:42:34] klapaucius вошёл(а) в комнату
[11:54:04] mrm вошёл(а) в комнату
[11:54:41] <mrm> gds: Привет! Обновление overbld не намечается? :-)
[12:13:35] bobry вошёл(а) в комнату
[12:13:43] <bobry> вах, новый релиз!
[12:15:42] dzhon вошёл(а) в комнату
[12:15:44] bobry вышел(а) из комнаты
[12:15:57] <gds> mrm: привет.  Где-то пару недель назад компилял оверблд, там не срослось с ocamlnet и с батарейками, поэтому решил подождать.  Вроде ocamlnet очухался, батарейки ещё нет.  Гадость в том, что не хочу релизить то, что будет неполным по сравнению с предыдущими версиями оверблд.
[12:16:40] <mrm> gds: А что в батарейках не срослось?
[12:17:20] <dzhon> дистрибутив под win32 еще не собирался официально ?
[12:18:42] <mrm> gds: Они немного совместимость поломали между 1.4.1 и 1.4.2. Может в этом дело?
[12:20:19] <gds> mrm: http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2012/07/10.html#15:01:16.919392 , но это не совсем то, там какие-то ещё лажи вылезли.  С weak hashtables, точно помню.
[12:27:52] dzhon вышел(а) из комнаты: Replaced by new connection
[12:27:53] dzhon вошёл(а) в комнату
[12:28:21] dzhon вышел(а) из комнаты
[12:41:27] <mrm> gds: Ясно. Ну не страшно, подождём, пока всё устаканится :-) Но я бы с удовольствием обновил свой overbld с 3.11.2
[12:57:13] <gds> mrm: мне тоже нужен свежак для эпизодической работы с вендой.  Поэтому я слежу за этими делами, и как только батарейки решат вопрос, буду пробовать их и остальное, что после них.
[13:03:23] Kakadu вошёл(а) в комнату
[13:05:26] <gds> mrm, dzhon: сейчас в рассылку пришло про вендоинсталлер от мистера поценко.
[13:06:13] <mrm> gds: А чем эта вундервафля лучше/хуже, чем overbld?
[13:06:28] <mrm> По крайней мере там ocamlfind есть "из коробки"
[13:06:52] <mrm> Но нет кучи полезных библиотек, как в overbld (это всё ручками придётся ставить)
[13:08:04] <gds> лучше -- типа-официальностью.  Хуже -- 1. тем, что не дают библиотеки, чисто ocaml + findlib + emacs, 2. тем, что мои патчи окамла для венды нужны были не просто так, а для фиксов каких-то проблем, а там этих патчей нет (хотя кое-что ушло в апстрим; пересмотрю потом).
[13:09:21] <gds> кстати, я тут недавно наколбасил хреньку для задачи "перекомпилять набор библиотек в нужном окамловском окружении", и, видимо, заменю ею те башевские скрипты.
[13:09:29] <Kakadu> mrm: Здарова, дельфист!
[13:09:48] <mrm> gds: Круто! Смерть шеллам! :-)
[13:10:06] <mrm> Kakadu: Привет! Как биндинги к Qt продвигаются?
[13:10:16] <gds> кое-что на шелле будет -- компиляция окамла, findlib'а и запуск моего "ребилдола".
[13:10:16] <Kakadu> я на них положил
[13:10:42] <Kakadu> там кризис концепции
[13:10:45] <mrm> Я делфист, но не истинный, а вынужденный :-(
[13:11:04] <mrm> Разница между истинным Делфистом и не истинным -- как между фанатиком и верующим
[13:11:07] <Kakadu> А ты на каком дельфи дельфинируешь?
[13:11:10] <mrm> 7
[13:11:20] <Kakadu> Ну так дельфист лучше чем дотнетчик
[13:11:25] dzhon вошёл(а) в комнату
[13:11:26] <mrm> Легаси, чтоб его...
[13:11:36] <mrm> Kakadu: Почему ты так решил?
[13:11:53] <Kakadu> я отчасти фанатик против мелкомягких
[13:12:22] <mrm> Я нигде не видел такой концентрации говнокода и быдла, как в сообществе Delphi
[13:12:31] <mrm> а Делфи7 -- дно этого сообщества
[13:12:50] <Kakadu> хочешь найти было --- поиграй в доту :trollface:
[13:13:04] <f[x]> "На дне. Исповедь дельфомана."
[13:13:09] <mrm> Похожее впечатление на меня произвело только соприкосновение с миром PHP :-)
[13:13:57] <dzhon> Кто-то еще на node.js возлагает слишком большие надежды.
[13:14:07] <Kakadu> mrm: кстати, как тебе лазарус?
[13:14:13] <dzhon> gds: а что в рассылке пишут, если в двух словах ?
[13:14:29] <mrm> Kakadu: так CLI -- международный стандарт. Есть годная свободная реализация -- mono. При чём тут мелкомягкие?
[13:14:51] <Kakadu> Я не видел ни одного человека, который бы писал под моно
[13:15:05] <Kakadu> тем паче не такой уж он и стандарт
[13:15:06] <mrm> Kakadu: практически не использовал. Там не работают некоторые компоненты, с которыми приходится иметь дело в Делфи7
[13:15:09] <dzhon> mrm: кроме Мигеля, по-моему, mono никто не использует.
[13:15:15] <ftrvxmtrx> я видел целую компанию, пишущую под mono
[13:15:24] <ftrvxmtrx> мало того, я в этой компании работал, писал на erlang
[13:15:40] <mrm> Kakadu: А чем плох стандарт? Он очень хорошо всё специфицирует
[13:15:46] Kakadu вошёл(а) в комнату
[13:15:54] <Kakadu> mrm: Мне рассказывали что очень не всё
[13:16:40] <mrm> И в чём проблемы mono?
[13:17:03] <mrm> Компактный стабильный рантайм, работает на куче платформ
[13:17:30] <Kakadu> давай договримся что я упоротый
[13:17:31] <mrm> Сейчас там нормальный сборщик мусора появился и кодогенератор на базе LLVM
[13:18:43] <mrm> Правда, я сам не использовал mono в промышленных задачах (только в паре личных проектов). Возможно, что там в каких-то условиях действительно вылезут серьёзные проблемы (с производительностью или со стабильностью)
[13:19:40] <dzhon> Mono's aim is to achieve full support for the features in .NET 4.0 except Windows Presentation Foundation (WPF) (which the Mono team do not plan to support due to the amount of work it would need),[33] Entity Framework and Windows Workflow Foundation (WF), limited Windows Communication Foundation (WCF).[34] Some missing parts of the .NET Framework are under development in an experimental Mono subproject called Olive.[35]
[13:19:44] <dzhon> Ну как-то так
[13:20:04] <dzhon> WPF давно хотят, а все никак
[13:20:24] <mrm> И без WPF экосистема побогаче получается, чем, скажем, камловая
[13:21:01] <mrm> Есть тонны библиотек (среди которых встречаются качественные) и огромная толпа программистов, имеющих опыт разработки под .net
[13:21:45] <mrm> + есть все библиотеки из явы (посредством IKVM)
[13:23:00] <dzhon> Все библиотеки в уловиях наличия хорошего FFI -- уже не аргумент :)
[13:23:24] dzhon вышел(а) из комнаты: Replaced by new connection
[13:23:25] dzhon вошёл(а) в комнату
[13:23:27] <mrm> Вот. И FFI нормальный там есть
[13:23:30] <mrm> А в камле нету
[13:25:09] <mrm> Кстати, думаю что несложно было бы к камлу прикрутить FFI на базе libffi. От него небольшой оверхед есть (в отличие от FFI, интегрированных с житом, как в LuaJIT2), зато реализация очень сильно упрощается
[13:26:05] <mrm> Я недавно реализовал на базе него FFI для встроенного языка одной софтины. Совсем несложно получилось. Он тормозит немного, зато код на Делфи или С ручками не нужно писать, как в камле
[13:29:26] <f[x]> да ну?
[13:29:39] <f[x]> магический libffi сам конвертит параметры?
[13:29:58] <mrm> Нет, конечно. Вот это и нужно реализовать
[13:30:04] <mrm> И продумать интеграцию со сборщиком мусора
[13:30:22] <mrm> В моём случае с gc всё просто получилось, т.к. он консервативный (Boehm)
[13:30:24] <f[x]> так а что собственно умеет libffi?
[13:31:06] <mrm> Он умеет генерить код для вызова функций с использованием разных соглашений о вызовах
[13:31:15] <mrm> И умеет генерить трамплины для коллбеков
[13:31:26] <f[x]> > It provides a C programming language interface for calling natively compiled functions given information about the target function at run time instead of compile time
[13:31:43] <f[x]> вот счастье то
[13:31:50] <mrm> Но не умеет, например, собирать структуры или массивы (это мне пришлось самому делать, учитывая выравнивание полей и прочую низкоуровневую херотень)
[13:31:53] <dzhon> f[x]: and opposite direction too ;)
[13:32:03] <f[x]> > given information about the target function at run time instead of compile time
[13:32:08] <mrm> :-)
[13:32:55] <dzhon> mrm: а вот то, что приходится учитывать выравнивания -- это ужасно.
[13:33:11] <mrm> f[x]: Понятно, что в камле всё можно на этапе компиляции нагенерить (через С). Но libffi позволяет избавиться от сишного компилятора
[13:33:19] <f[x]> mrm: очень круто
[13:33:23] <f[x]> т.е. апи функции поменялся
[13:33:34] <f[x]> и узнаю я об этом в питон стиле - в рантайме
[13:33:40] <f[x]> прогресс, да
[13:33:48] <mrm> :-) Зато не нужно на С писать ни строчки
[13:34:11] <f[x]> зато ты пишешь то же самое что писал на си - на камле - и без никаких гарантий
[13:34:11] <dzhon> зато вся статическая типизация накрывается медным :)
[13:34:13] <mrm> Ну а как иначе, если DLL написана на С и нет исходников?
[13:34:22] <f[x]> цена ошибки - сегфолт
[13:34:41] <f[x]> mrm: такое только "на дне" встречается
[13:34:48] <f[x]> у нормальных библиотек есть хидеры
[13:35:01] <mrm> Ну и с текущим камловым FFI та же беда. Если в динамически подключаемой DLL поменяется интерфейс, то всё накроется медным тазом (сегфолтнется)
[13:35:10] <mrm> f[x]: Согласен
[13:35:51] <dzhon> а где есть хэдеры, можно уже взять SWIG же, хотя бы
[13:36:08] <mrm> Мне в камловом FFI больше всего не нравится необходимость писать какую-то низкоуровневую херь на С, учитывать всякие тонкости взаимодействия с gc
[13:36:10] <f[x]> только есть плюс ещё одна проверка в компайл-тайм
[13:36:16] <f[x]> mrm: юзай camlidl
[13:36:26] <f[x]> camlidl надо просто допилить и всё
[13:36:31] <mrm> :-)
[13:36:41] <f[x]> просто те кто могут его допилить предпочитают по быстрому писать биндинги самому
[13:36:46] <mrm> :-)
[13:37:14] <f[x]> и биндинги без си уже есть
[13:37:23] <mrm> Я их сам пишу и вроде как уже наловчился, но время от времени наступаю на старые грабли
[13:37:30] <f[x]> ocaml-dlopen или как-то так
[13:37:33] <mrm> И, думаю, многие наступают
[13:37:37] <dzhon> Кстати, уважаемые, а новостей на лоре/опеннете нет из-за того, что не нужно, али еще релиз не совсем релизнулся ?
[13:37:43] <f[x]> ну я согласен что биндинги в 90% случаях должна делать машина
[13:37:54] <f[x]> с подсказками
[13:38:00] <mrm> А он умеет автоматически преобразовывать рекорды в сишные структуры?
[13:38:01] <f[x]> camlidl достаточно неудобен
[13:38:06] <f[x]> camlidl - да
[13:38:54] <f[x]> тем более camlidl даже на forge отпустили уже
[13:39:01] <f[x]> вперёд, патчь @ компиляй
[13:39:16] <f[x]> но всем пофиг
[13:39:19] <mrm> У меня сейчас есть такой велосипед на libffi + камловая утилита на базе CIL, которая парсит сишные хидеры и генерит описания для FFI :-) Но там язык динамический (похож на JS)
[13:39:50] <mrm> И там, наверное, никак по-другому не получится (по крайней мере в Python, Racket и LuaJIT всё точно так сделано)
[13:39:50] <f[x]> > камловая утилита на базе CIL
это годно
[13:40:08] <f[x]> ну ясно, убогим динамическим языкам по другому нельзя
[13:40:15] <f[x]> но мы то можем иметь лучшее решение
[13:40:25] <f[x]> всё то же самое делать в компайл-тайм
[13:40:39] <f[x]> тулзы допилить надо
[13:40:54] <mrm> Мне не нравится зависимость от компилятора С
[13:41:09] <f[x]> у тебя она и так есть, если ть компилишь в нативный код
[13:41:38] <f[x]> кто-то в любом случае должен парсить хидеры
[13:41:46] <f[x]> или компилятор или утилита своя
[13:42:05] <mrm> С камлом -- да, не имеет. Я вообще про зависимость FFI от компилятора С
[13:42:14] <f[x]> компилятор всегда правее, а утилита может генерить разные представления
[13:42:29] <mrm> Недопустимо заставлять пользователей ставить mingw/cygwin под виндой :-)
[13:42:36] <f[x]> mrm: динамический ffi не зависит от компилятора си
[13:42:40] <f[x]> ничего не понял
[13:42:46] <f[x]> при чём тут пользователи?
[13:42:49] <Kakadu> Люди, а как цацкель алгебраически типы в си перегоняет?
[13:42:58] <Kakadu> алгебраические*
[13:43:04] <f[x]> пользователи получают готовый бинарник который просто работает
[13:43:07] <mrm> f[x]: Это я не про камло, а вообще про FFI :-)
[13:43:08] <dzhon> mrm: там сейчас шланг активно используют для парсинга C/C++, можно его.
[13:43:26] <mrm> Пользователи сами пишут программы, которые подключают через FFI модули, написанные на Делфи
[13:44:10] <f[x]> а, mrm, ну это уже отдельные спец проблемы когда пользователи пишут код
[13:44:36] <f[x]> и всё равно можно обойтись без сишного компилера
[13:45:02] <f[x]> просто к модулям нужно описание интерфейсов из которого можно будет сооружать динамическии вызовы
[13:45:11] <mrm> f[x]: Так, как я делаю с libffi?
[13:45:16] <f[x]> например
[13:45:36] <f[x]> у нас разные ffi
[13:49:06] <mrm> f[x]: А в чём проблемы подхода camlidl? В том, что нужно описывать интерфейс на специальном языке? В общем случае, всё равно придётся что-то ручками описывать (в сишных хидерах содержится недостаточно информации)
[13:49:41] <f[x]> mrm: да
[13:49:43] <f[x]> тут всё ок
[13:49:43] <mrm> f[x]: Но можно сделать такой финт -- дописывать в хидеры дополнительную информацию в специальных комментах
[13:49:52] <f[x]> дописывать не вариант
[13:49:55] <f[x]> хидеры меняются
[13:49:57] <f[x]> проблема не в этом
[13:50:05] <f[x]> проблема чисто техническая
[13:50:11] <f[x]> camlidl недостаточно гибок
[13:50:31] <mrm> т.е. подход нормальный, но реализация хромает?
[13:50:35] <f[x]> да
[13:50:48] <f[x]> поэтому я и говорю "допилить", а не с нуля делать
[13:51:17] <f[x]> некоторые типы неадекватно маппятся
[13:51:38] <mrm> А как camlidl учитывает изменения в интерфейсе библиотек?
[13:51:52] <f[x]> некоторые юзкейсы типа абстрактный хэндл и операции с ним - сложно соорудить
[13:51:56] <f[x]> mrm: а никак
[13:51:57] <mrm> Мне интересно, как эту проблему решить
[13:52:01] <f[x]> и это тоже проблемка
[13:52:26] <f[x]> можно парсить сишные хидеры утилитой и сверять что idl примерно соответствует хидеру
[13:52:34] <mrm> Ага, тоже об этом подумал
[13:52:47] <f[x]> можно аннотации генерить не через idl, а как инкрементальный апдейт к хидеру
[13:53:04] <f[x]> и прикладывать этот апдейт к новой версии хидера
[13:53:17] <f[x]> то что не сходится - править руками
[13:55:12] <mrm> Я ещё над более глобальной задачей думаю -- как бы так прокачать механизм динамической линковки, чтобы он учитывал типы экспортируемой и подключаемой функции. Почему в механзимах динамической линковки сразу не продумали этот важный момент?
[13:55:35] <f[x]> mrm: потому что не все языки одинаково выразимы
[13:55:42] <f[x]> языки разные
[13:55:51] <f[x]> поэтому нужен общий делитель
[13:55:53] <f[x]> по факту это си
[13:55:54] <mrm> Я про С ABI. Наличие функции dlsym проверяет, а почему бы и типы не проверять?
[13:56:16] <f[x]> добро пожаловать в c++ abi
[13:56:19] <f[x]> там проверяет типы
[13:56:25] <mrm> :-)
[13:56:30] <f[x]> серьёзно
[13:56:47] <f[x]> только c++ abi не стандартизирован и различается между компиляторами
[13:56:48] <mrm> Или dynlink в окамле, ага :-)
[13:57:05] <f[x]> дык
[13:57:22] <mrm> Вот почему такую простую вещь в С сразу не добавили?
[13:58:03] <f[x]> стандарт си имхо вообще не описывает внешние интерфейсы
[13:58:25] <mrm> Я сейчас участвую в разработке софтины, состоящей из сотен DLL. Мне мешает спокойно спать баттхерт от регулярных проблем, возникающих от динамической линковки функций с неправильным интерфейсом
[13:58:27] <f[x]> dlsym это POSIX-2001
[13:58:52] <f[x]> mrm: не работай с сырыми dll'ками, требуй описание интерфейса
[13:59:07] <f[x]> т.е. введи какую-то типизированную обёртку над дллками
[13:59:10] <mrm> Да, нужна какая-то своя система
[13:59:23] <f[x]> если языков для спряжение мало или конечное множество - то что-то можно сделать
[13:59:30] <mrm> А описания типов экспортировать вместе с функциями
[13:59:42] <mrm> Например, добавляя к символу постфикс "_t"
[14:00:01] <f[x]> гг, ты сейчас хочешь c++ abi опять изобрести
[14:00:05] <dzhon> mrm: ну так возьми формат плюсового abi
[14:00:06] <mrm> И генерить всякий boilerplate препроцессорами (и в говноделфи даже макросов нет)
[14:00:14] <mrm> *ибо
[14:00:16] <f[x]> я думаю типы не экспортируются в рантайме потому что когда это всё делали не был оскриптовых языков
[14:00:23] <f[x]> т.е. не нужно было в рантайме матчить типы
[14:00:32] <f[x]> были хидеры и компиляция
[14:01:19] <f[x]> случай 3rd-party dll без хидеров не рассматриваем - это больше по сфере психических отклонений
[14:01:27] <mrm> :-)
[14:01:29] <mrm> :-(
[14:02:25] <f[x]> вообщем поговорили и славно. за camlidl я надеюсь когда-нибудь взяться.
[14:08:50] <gds> f[x]: тогда заодно поправь там багу, связанную с тем, что ignore-аргументы не заполняются NULL'ом, несмотря на обещанное в доке.
[14:19:15] Typhon вошёл(а) в комнату
[14:29:57] dzhon вышел(а) из комнаты: Replaced by new connection
[14:29:58] dzhon вошёл(а) в комнату
[14:30:53] <f[x]> gds: твои поддерживающие комментарии всегда служили мне путеводной звездой
[14:37:38] <gds> я такой!
[15:35:16] Vinzent вошёл(а) в комнату
[16:29:10] <ermine> пора обновлять камло? ничо не сломается?
[16:29:29] <f[x]> КАМЛО САМО НЕ ОБНОВИТСЯ
[16:29:33] <f[x]> (извините)
[16:30:02] <ermine> а всё остальное?
[16:36:18] <ermine> блин, какой же css неинтуитивный
[16:53:27] <ftrvxmtrx> батарейки только из git соберутся, бранч ocaml4.00
[16:56:13] dzhon вышел(а) из комнаты: Replaced by new connection
[16:56:13] dzhon вошёл(а) в комнату
[17:02:55] Vinzent вышел(а) из комнаты
[17:05:48] <ermine> придецца подождать пока ктонить не соберет все под четвертое камло
[17:05:55] <ermine> включая оксигень и оазис
[17:11:11] Typhon вышел(а) из комнаты: Replaced by new connection
[17:11:34] Typhon вошёл(а) в комнату
[17:20:34] mrm вошёл(а) в комнату
[17:20:51] mrm вышел(а) из комнаты
[18:00:04] ermine заценивает поиск камла на http://duckduckgo.com/
[18:00:55] <ermine> гугль фтопку
[18:02:31] <komar> http://www.google.com/codesearch/
[18:02:33] <komar> Бугага.
[18:02:33] dzhon вышел(а) из комнаты
[18:03:51] <ermine> при чом тут codesearch
[18:04:05] <ermine> а если нужно чтиво по камлу?
[18:04:31] <ermine> там впереди лезут не стэкофервловы всякие
[18:04:40] <komar> Я туда вводил lang:ocaml huita и искал все применения функции huita в коде.
[18:04:46] <komar> Было очень удобно.
[18:04:48] <ermine> и в elinks выглядит удобнее
[18:04:53] <komar> Иногда целые потерянные человечеством либы находил.
[18:05:05] <ermine> без гуглевого мусора
[18:05:10] <ermine> гуг-левого
[18:05:22] <komar> Ввел в твой дукдукго слово «хуита», он выдал мне страницу http://duckduckgo.com/html
[18:05:27] <komar> Зачем так жить?
[18:06:08] <komar> > "Wow shop" - интернет-магазин сувениров и подарков
[18:06:12] <komar> Релевантно-то как.
[18:07:05] <komar> Лол, в гугле результаты еще хуже.
[18:07:13] <komar> Моего сайта ни на первой, ни на второй странице. :(
[18:07:17] <komar> Одни вконтакты всякие.
[18:07:25] ermine ввела слово из трех букв, оно выдало первой ссылкой ссылку на педию! о!
[18:07:36] <komar> Так в гугле то же самое.
[18:08:19] <ermine> а в elinks русский гугль почти перестал работать - elinks не обрабатывает чарсет в мете документа
[18:08:30] <ermine> а тут всё честно
[18:27:13] Kakadu вышел(а) из комнаты
[19:04:12] Sun][ вышел(а) из комнаты
[19:19:12] mrm вышел(а) из комнаты
[19:20:24] Typhon вышел(а) из комнаты
[19:29:29] Kakadu вышел(а) из комнаты
[20:04:38] <gds> внезапно: на итератах невозможно сделать честную альтернативу итератов, т.е. такой комбинатор "alt it1 it2", который возвращал бы результат работы первого итерата, или, в случае его ошибки, кормил бы второй итерат тем же потоком и возвращал бы его результат.
а зачем мне надо надо -- писал в псачике.  сраные mime multipart.
[20:11:23] ftrvxmtrx вышел(а) из комнаты
[20:34:26] Sun][ вошёл(а) в комнату
[20:35:53] Typhon вошёл(а) в комнату
[20:42:03] Kakadu вошёл(а) в комнату
[20:57:23] <ermine> gds: а что ты считмешь нечестной?
[21:02:32] Kakadu вышел(а) из комнаты
[21:04:12] <ermine> gds: кстати классический вариант - кормить все альтернативы, пока лишние ветви не сдохнут
[21:04:30] <ermine> в смысле распаралерить их
[21:04:41] <ermine> это как раз в теории идеальный вариант
[21:12:16] ftrvxmtrx вошёл(а) в комнату
[21:15:29] <gds> ermine: нечестно -- например, если итерат1 прочитал 10 элементов, а итерат2 прочитал 3 и остальные 7 ушли фтопку.  Неприемлемо по инвариантам -- когда итерат1 прочитал 10 элементов и конец файла, сказал своё фи, итерат2 прочитал 3 элемента и не может вернуть остальные 7 элементов, потому что нарушит инвариант "если итерату (в данном случае -- собранному из этих двух комбинатором, и дальше к нему при'bind'ен ещё один) дали eof, то он должен перейти в состояние готово/ошибка, а не в "хочу ещё данных"".
Кроме того, итераты -- не парсеры, а более общая штука, и там сайд-эффекты (без них -- неинтересно).  Например, заливка стопиццотгигабайтного файла на диск.  Разумеется, нельзя это просто положить в память.  А если есть сайд-эффекты через Ю-манатку, то проблема решается.
В общем, кое-как решил (продумал), но некрасиво.
[21:18:02] Sun][ вышел(а) из комнаты: Replaced by new connection
[21:18:02] Sun][ вошёл(а) в комнату
[21:26:19] <ermine> gds: такое ощущение, что ты хочешь lazy IO
[21:34:00] mrm вошёл(а) в комнату
[21:38:36] mrm вышел(а) из комнаты
[21:48:44] Vinzent вошёл(а) в комнату
[21:51:04] <ermine> gds: ты фкурсе про функцию Unix.dup2? (вроде она там есть)
[21:51:57] Typhon вышел(а) из комнаты: Replaced by new connection
[21:52:18] Typhon вошёл(а) в комнату
[21:53:48] <gds> ermine: нет, lazy io я не хочу ни в коем случае.  Разве что когда приходится.
Про дупу -- слышал.  Но тут не совсем то, впрочем, ещё думаю в этом направлении.
[21:55:30] <ermine> gds: дупить перед альтернативой, сикать в нужную позу и вперед
[21:55:39] Typhon вышел(а) из комнаты
[21:56:00] <ermine> gds: а как твои упражнения с coq?
[21:56:15] ermine думает - а не попробовать ли опять почитать
[21:56:31] Typhon вошёл(а) в комнату
[22:02:08] <gds> ermine: не, дупить не могу, у меня сокет.
coq -- всё ок.  Пока использую мало модных фишек, но там задача такая, что не требует их (а они усложняют кое-где).  Протрахался с тайпклассами кучу времени, в результате сделал "общемировую манатку", экстрактящуюся в камлокод, в unit -> 'a, фактически, ну и приправил Obj'ем для настоящих окамловских исключений.  В остальном -- код пишется прилично.  Мне это и надо было, просто язык программирования с мощными типами, вот его и имею.
[22:13:31] <gds> кстати, подтянул туда по паре функций из String, Buffer, Queue, вроде даже жить можно.
[22:24:44] Typhon вышел(а) из комнаты
[22:29:07] Typhon вошёл(а) в комнату
[22:36:26] Kakadu вошёл(а) в комнату
[22:38:22] Typhon вышел(а) из комнаты: Replaced by new connection
[22:38:57] Typhon вошёл(а) в комнату
[22:53:24] Vinzent вышел(а) из комнаты
[23:01:08] Typhon вышел(а) из комнаты
[23:53:40] f[x] вошёл(а) в комнату
[23:57:45] akovbovich вышел(а) из комнаты
[23:58:41] akovbovich вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!