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

GMT+4
[00:11:14] Typhon вошёл(а) в комнату
[01:18:48] <bobry> http://hackage.haskell.org/packages/archive/haskell-src-meta/0.5.1.2/doc/html/src/Language-Haskell-Meta-Utils.html#normalizeT
[01:18:52] <bobry> учитесь код писать!
[01:45:12] f[x] вышел(а) из комнаты: Computer went to sleep
[01:55:40] <gds> bobry: очень, скажу я, generic.  Почти обосраться можно.  Уж получше камла всякого.  Х-ь to the win!
[01:57:01] Kakadu вышел(а) из комнаты
[02:00:59] <bobry> :D
[02:01:10] <bobry> ну так, все что недостаточно generic можно нагенерить TH!
[02:38:47] komar вышел(а) из комнаты
[02:39:24] komar вошёл(а) в комнату
[02:54:49] <bobry> http://users.livejournal.com/_adept_/120192.html
[03:13:36] bobry вышел(а) из комнаты
[03:34:28] letrec вошёл(а) в комнату
[03:34:39] letrec вышел(а) из комнаты
[03:34:53] letrec вошёл(а) в комнату
[03:52:46] tilarids вышел(а) из комнаты
[06:55:22] ermine вошёл(а) в комнату
[09:42:22] <gds> да уж, одэпт тупит.
[10:03:16] bobry вошёл(а) в комнату
[10:05:49] Sun][ вошёл(а) в комнату
[10:22:44] Typhon вышел(а) из комнаты
[10:24:21] ftrvxmtrx вышел(а) из комнаты
[10:30:20] bobry вышел(а) из комнаты
[10:34:26] Typhon вошёл(а) в комнату
[10:39:13] Typhon вышел(а) из комнаты: Replaced by new connection
[10:39:32] Typhon вошёл(а) в комнату
[10:41:43] Typhon вышел(а) из комнаты
[10:55:25] tilarids вошёл(а) в комнату
[10:55:55] tilarids вышел(а) из комнаты
[10:56:12] tilarids вошёл(а) в комнату
[11:11:22] Typhon вошёл(а) в комнату
[11:13:45] ftrvxmtrx вошёл(а) в комнату
[11:18:20] Typhon вышел(а) из комнаты
[11:18:58] Typhon вошёл(а) в комнату
[11:26:27] Typhon вышел(а) из комнаты
[11:27:10] Typhon вошёл(а) в комнату
[11:29:39] bobry вошёл(а) в комнату
[11:30:29] tilarids вышел(а) из комнаты
[11:31:27] tilarids вошёл(а) в комнату
[11:35:01] Typhon вышел(а) из комнаты: Replaced by new connection
[11:35:20] Typhon вошёл(а) в комнату
[11:36:11] Typhon вышел(а) из комнаты
[11:43:24] ermine вышел(а) из комнаты
[11:49:47] ermine вошёл(а) в комнату
[12:05:15] Typhon вошёл(а) в комнату
[12:16:03] shaggie вошёл(а) в комнату
[12:31:35] <f[x]> > Пришлось лезть в потроха ocaml runtime, и смотреть, как работает полиморфное сравнение. Выяснилось, что документация не врет
[12:31:43] <f[x]> хакир
[12:57:19] bobry вошёл(а) в комнату
[12:57:19] bobry вышел(а) из комнаты
[12:57:45] bobry вошёл(а) в комнату
[12:57:46] bobry вышел(а) из комнаты
[13:32:33] <klapaucius> > Другое дело, что если бы compare всегда бросало бы исключение, то это стало бы ясно сильно раньше.
[13:33:28] <klapaucius> По хорошему, такое компилироваться не должно. Окамл все-таки позиционируется как язык программирования, а не питон какой-нибудь.
[13:33:58] <bobry> true
[13:34:03] <f[x]> это в compile-time не ловится
[13:34:44] <f[x]> если всегда бросать исключение - это замедление fast-path
[13:36:39] tilarids вышел(а) из комнаты
[13:37:30] <klapaucius> В sml и haskell отлично ловится.
[13:40:12] <f[x]> ocaml это не sml и не haskell
[13:40:13] <bobry> почему не ловится то? мы же знаем типы обоих термов при сравнении, всгдеа
[13:40:24] <f[x]> к чему этот коммент вообще был?
[13:40:35] <f[x]> bobry: абстрактные типы например
[13:41:10] <bobry> я бы понял, если бы абстрактные типы нельзя было сравнивать через compare :)
[13:42:11] <f[x]> и потом как такое исключение записать в сигнатуре
[13:42:23] <f[x]> начинаются всякие f#-подобные хаки
[13:42:56] <bobry> что-что записать в сигнатуре?
[13:43:19] <f[x]> сигнатура compare которая не сравнивает абстрактные типы
[13:44:26] <klapaucius> ('a -> 'a -> int) when 'a : comparison
[13:44:40] <f[x]> т.е. либо нужна система типов которая может это разрулить (gadt'ы? я не знаю) либо special-case'ить сравнение
[13:45:17] <klapaucius> О том и речь, что в языке программирования система типов нужна, а не система неожиданных эксепшенов.
[13:50:13] <f[x]> klapaucius: если бы все языки программирования были бы х-ями то было бы скучно жить
[13:51:16] <klapaucius> Хаскель-то тут причем? Я скопировал сигнатуру прямо из f#-ного репла.
[13:51:42] <f[x]> ты это f# в пример поставил?
[13:51:48] <f[x]> серьёзно?
[13:52:02] <Typhon> фшарп это ж рассадник хаков типовых, не? :)
[13:52:50] <klapaucius> Не смотря на общую его убогость, в некоторых случаях у сайма ума хватило для более-менее приемлемого решения.
[13:53:19] <klapaucius> Да, из-за необходимости взаимодействовать с .нет там хак на хаке.
[13:55:41] akovbovich вошёл(а) в комнату
[13:56:13] <f[x]> там и своих дырок хватает
[13:57:18] <f[x]> ради вот этого полиморфного + например
[13:57:23] <f[x]> http://stackoverflow.com/a/501116/118799
[14:03:46] <klapaucius> В f# нет полиморфного (+). Там это операция с типом, разрешаемым во время компиляции.
[14:06:05] tilarids вошёл(а) в комнату
[14:06:46] <f[x]> ну один фиг
[14:07:16] <klapaucius> Дыра по ссылке т.е. let inline retype (x:'a) : 'b = (# "" x : 'b #) полный аналог окамловской дыры external retype : 'a -> 'b = "%identity"
[14:08:41] <klapaucius> Я бы не сказал, что один - в f# две системы типов - одна bounded параметрический полиморфизм, а вторая - аналог C++-ных темплейтов.
[14:10:09] Kakadu вошёл(а) в комнату
[14:11:45] <f[x]> ну ок, мне моего краткого знакомства и так было достаточно
[14:11:59] <f[x]> не буду спорить на темы которые я с чужих слов только слышал :)
[14:14:16] <Kakadu> я тут прочитал, что в фадиезе все типы инвариантны.
[14:14:24] <Kakadu> Подумал --- вроде и правда
[14:15:29] <Typhon> у меня жиз-ть сервиса описывает fsm'кой (ну точнее пачкой, конечно), что бы мне посмотреть на окамеле, чтобы декларативно эту фсм описать, да ещё желательно так, чтобы потом компелятор проверял, что я незаконные переходы не делаю
[14:19:16] <Typhon> (идеально, если описывать я буду фсм в виде:
[14:19:20] <Typhon> make_afp: exist -> afp_requested  // Изготовить отпечаток минуты )
[14:19:33] <Typhon> типа event: from -> to // comment
[14:19:45] <Typhon> но это не самое главное
[14:38:25] <Kakadu> мне тут привидилось http://programmingmind.com/projects/isometric-game-development-in-html-5-canvas-part-1 и захотелось js_of_ocaml попинать
[14:41:49] tilarids вышел(а) из комнаты
[15:08:45] <bobry> Typhon: может тебе лучше erlang и какой нить gen_fsm? :)
[15:08:52] <bobry> а окамл внутри, через порт
[15:11:11] <gds> Typhon: уже решил про fsm?
[15:22:32] tilarids вошёл(а) в комнату
[15:23:16] tilarids вышел(а) из комнаты
[15:23:30] tilarids вошёл(а) в комнату
[15:30:03] komar вышел(а) из комнаты
[15:35:53] <Typhon> gds: нет, оно пока факультативно, в фоне :-)
[15:36:14] <Typhon> bobry: кстати, за напоминание о gen_fsm спасибо :)
[15:37:01] <bobry> для справки: я сам им еще не пользовался, плюс мой коллега эрангер говорит что кошерней использовать gen_server и навелосипедить fsm там
[15:38:14] <gds> Typhon: можешь предоставить более подробный пример?  либо в виде предполагаемого кода, либо хотя бы тупо фотку бумажки с описанием.  публично либо приватно на твоё усмотрение.
[15:46:20] <Typhon> http://paste.in.ua/4175/  — вот графиз-описание, вот картинка: http://dl.dropbox.com/u/7365614/fsm.dot.png
[15:49:42] <Typhon> предполагаемое описание фсм я выше давал, хочется его записывать как можно более похоже на .dot (может генерировать даже), евенты и ноды это, видимо, варианты (полиморфные?). ну и нужно нечто (модуль/объект/рекорд/вотева) для хранения текущего состояния. хочу слать евенты, причём если компилятор сможет как-то проверить, что евент допустим в данном состоянии — будет шикарно, но хз как тут быть, без создания отдельного типа на стейт/событие.
[15:50:32] <f[x]> достаточно наверное уметь матчить тип данных передаваемых евентом с типом принимаемым состоянием
[16:02:12] <gds> Typhon: задачу понял, буду думать.  Дело в том, что мне подобное (только для ввода-вывода) надо будет делать.
[16:03:12] <Typhon> а можешь пояснить, что значит "для ввода/вывода"?
[16:03:58] <Typhon> f[x]: ну вот это как раз же вроде "создать на каждый евент по типу", не? иначе остаётся только матч_файлуре ловить, что ок, но не идеально :-)
[16:04:44] <f[x]> по конструктору?
[16:08:52] akovbovich вышел(а) из комнаты
[16:13:12] <f[x]> в таком раскладе может быть интересным PR#5584
[16:16:23] <gds> Typhon: ввод-вывод можно представить как набор композиционируемых автоматов.  Не скажу, что это сходу видится дохрена удобным, но исследовать это надо, практически "по работе".
[16:17:18] <Typhon> у меня ввод/вывод и автоматы сразу приравниваются к "парсинг" и я тут бы глянул на ragel, тем более, что ув. f[x] уважил кодогеном правильным :-)
[16:18:01] <gds> Typhon: правильно я понимаю, что у тебя каждый узел будет представлен функцией, которой передают состояние из функций, стрелочки которых входят в неё, и которая, в зависимости от состояния, переходит по какой-то из стрелочек дальше, с потенциально новым состоянием?
[16:18:23] <gds> про рагуль -- понятно, учту.
[16:19:11] <Typhon> gds: ну да, в каждом узле делается какое-то действие и по результатам вываливается дальше
[16:19:58] <gds> далее, тебе нужен контроль того, что, если на графе у тебя 3 исходящих стрелочки, а на самом деле функция может перейти только в 1..2 из них, исходя из её логики?
[16:22:07] <Typhon> м, ну хотя бы, что из функции, которая может только в 1 и 2 не получалось 3. то что ты описал, это типа reachability, как я понимаю, тоже полезно
[16:27:44] <Typhon> f[x]: http://paste.in.ua/4176/ ну если по конструктору, то получается, что-то типа такого у меня; либо ворнинги и Match_failure в рантайме, либо wildcard pattern и как-то его самому хэндлить. либо я не понял про  "уметь матчить тип данных передаваемых евентом с типом принимаемым состоянием"
[16:30:15] <f[x]> а если на полуморфах?
[16:30:39] <f[x]> зачем выписывать общий тип event?
[16:31:27] <f[x]> т.е. очевидно что если ты хочешь иметь "реестр" всех состояний - то тогда придётся
[16:31:34] <f[x]> это за вычетом gadt'ов
[16:32:02] <f[x]> т.е. если хочется в динамике добавлять стейты итд - тогда нужен общий тип event
[16:34:15] <f[x]> хотя я теоретизирую
[16:39:26] <f[x]> не, я гоню
[16:39:30] <f[x]> так просто не получится
[16:39:35] <f[x]> ведь есть "текущий" стейт
[16:39:45] <f[x]> тогда остаётся покурить gadt'ы
[16:40:46] <Typhon> хм, нашли полезное применение, кажись? :)
[16:40:59] akovbovich вошёл(а) в комнату
[16:41:37] <f[x]> а я ж наугад :)
[16:48:36] komar вошёл(а) в комнату
[17:17:20] <gds> Typhon: у тебя "полезное состояние" имеет разные типы для разных "кружков"?
[17:20:17] <Typhon> по идее разные, но можно, извернуться и под один запихнуть, если я правильно вопрос понял :)
[17:50:32] komar вышел(а) из комнаты
[17:51:02] komar вошёл(а) в комнату
[17:59:00] Sun][ вышел(а) из комнаты
[18:07:37] <Kakadu> bobry: если время появится поковыряй https://github.com/camlunity/barbra/issues/32 плиз
[18:18:39] <Typhon> > у тебя "полезное состояние" имеет разные типы для разных "кружков"?
а, походу таки неправильно понял: "полезное состояние" имеет один тип, разным может быть что-то, что приходит с евентами в стейт. ну да это вроде Event of something решается.
[18:26:52] Kakadu вышел(а) из комнаты
[19:02:17] Typhon вышел(а) из комнаты
[19:07:26] Kakadu вошёл(а) в комнату
[19:24:07] akovbovich вышел(а) из комнаты
[19:26:37] akovbovich вошёл(а) в комнату
[19:27:22] bobry вышел(а) из комнаты
[19:34:03] ftrvxmtrx вышел(а) из комнаты
[20:48:15] Sun][ вошёл(а) в комнату
[20:52:46] letrec вышел(а) из комнаты
[20:56:51] akovbovich вышел(а) из комнаты
[20:57:16] bobry вошёл(а) в комнату
[20:59:41] shaggie вышел(а) из комнаты
[21:24:39] tilarids вышел(а) из комнаты
[21:29:34] <bobry> все учитесь писать понятные определения типов! http://compscicenter.ru/sites/default/files/materials/Homework7.htm
[21:29:49] <bobry> 'Function String' -- wat?
[21:31:19] <gds> да всё нормально и понятно, не прикапывайся.
[21:31:29] <gds> wat -- это динамическая типизация же!  :]
[21:34:07] <bobry> gds: ну мне нравится когда посмотрел на определение и все понял, тут вместо String видимо надо было писать Ident / Name
[21:49:40] <gds> а, это да.
[21:55:16] <gds> в общем, сдизайнилось тут что-то для Typhon, как появится -- расскажу.  Но там скорее кодогенерация, зато вроде нормально.  Подумаю ещё над чисто-типовым описанием.
[22:00:30] tilarids вошёл(а) в комнату
[22:21:55] klapaucius вышел(а) из комнаты
[23:07:52] ftrvxmtrx вошёл(а) в комнату
[23:08:47] tilarids вышел(а) из комнаты
[23:09:03] tilarids вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!