Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 13 октября 2010< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | ocaml мёртв, move on | Oh My God! They Killed Kamlp4! Bastards!
Конфигурация комнаты
Участники комнаты

GMT+4
[00:46:45] komar вышел(а) из комнаты
[01:07:19] ygrek вышел(а) из комнаты
[01:31:44] komar вошёл(а) в комнату
[01:44:42] gds вышел(а) из комнаты
[02:32:51] serp256 вошёл(а) в комнату
[02:38:00] komar вышел(а) из комнаты
[02:43:28] zert вышел(а) из комнаты
[02:45:40] serp256 вышел(а) из комнаты
[02:46:05] serp256 вошёл(а) в комнату
[03:09:55] serp256 вышел(а) из комнаты
[03:10:20] serp256 вошёл(а) в комнату
[03:25:53] serp256 вышел(а) из комнаты
[04:09:00] Typhon вышел(а) из комнаты: Replaced by new connection
[04:09:03] Typhon вошёл(а) в комнату
[04:10:24] Typhon вышел(а) из комнаты
[04:10:40] Typhon вошёл(а) в комнату
[04:10:52] Typhon вышел(а) из комнаты
[08:26:02] iNode вышел(а) из комнаты
[08:26:10] iNode вошёл(а) в комнату
[08:57:07] gds вошёл(а) в комнату
[10:16:02] <gds> у меня часто встречается код вида
fun i -> match i with
    [ IE_cont None k -> k s  (* в общем случае -- сделать что-то с k *)
    | IE_cont (Some _) _ | IE_done _ -> M.return (i, s)  (* вернуть что-то другое *)
    ]
думаю, если закатать всё в
do_this_match (if_ok : type_of_k -> 'a) (if_fail : unit -> 'a) i = ...
, то получится, что для второго случая надо будет создавать closure по-любому.
предполагаю, что это нельзя обойти (в том числе, созданием "статического" if_fail на каждый такой do_this_match).
Можно было бы camlp4, но это overkill.  А по-другому?
(про то, что это "оптимизация на спичках", уже думал, да и подобные pattern match'и уже написаны везде, так что тут скорее вопрос рефакторинга, который не должен ухудшать производительность.)
[10:25:12] arhibot вошёл(а) в комнату
[10:51:26] ermine вошёл(а) в комнату
[11:24:29] gds вышел(а) из комнаты
[11:25:21] gds вошёл(а) в комнату
[11:40:57] Kakadu вошёл(а) в комнату
[11:50:27] Typhon вошёл(а) в комнату
[12:00:55] komar вошёл(а) в комнату
[12:30:51] komar вышел(а) из комнаты
[13:36:59] <gds> хинт: если сложно вывести по типам функцию вида t 'a 'b -> t 'b d -> q 'b 'c -> q 'b 'd -> w 'a 'd 'b 'c, можно перед функцией определить абстрактные типы type a; type b; ... (плюс поменять сигнатуру), таким образом, компилятор в тексте ошибки не будет перенумеровывать-переименовывать ваши ненаглядные типовые переменные, а вы вдобавок сможете в тексте программы указать "((expr) : q b c)" например.
[13:42:31] <gds> хинт': если сложно вывести по типам функцию вида t 'a 'b -> t 'b d -> q 'b 'c -> q 'b 'd -> w 'a 'd 'b 'c, подумайте, может вам её не нужно реализовывать вообще.
[13:43:33] <gds> хинт'': если сложно вывести по типам функцию вида t 'a 'b -> t 'b d -> q 'b 'c -> q 'b 'd -> w 'a 'd 'b 'c, подумайте, может эту грязную работу можно поручить кому-нибудь ещё?
[14:08:21] zert вошёл(а) в комнату
[14:11:59] komar вошёл(а) в комнату
[14:23:04] ʇsʎɯ вошёл(а) в комнату
[14:33:09] ak79 вошёл(а) в комнату
[14:58:12] ak79 вышел(а) из комнаты
[15:23:14] serp256 вошёл(а) в комнату
[16:35:47] gds вышел(а) из комнаты: Replaced by new connection
[16:35:48] gds вошёл(а) в комнату
[16:42:49] gds вышел(а) из комнаты: Replaced by new connection
[16:42:51] gds вошёл(а) в комнату
[16:43:51] Kakadu вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[16:44:26] Kakadu вошёл(а) в комнату
[16:54:19] gds вышел(а) из комнаты: Replaced by new connection
[16:54:23] gds вошёл(а) в комнату
[16:59:07] komar вышел(а) из комнаты
[17:05:44] <gds> заборол.  Ну, смотрите сами, где понятнее логика: http://pastebin.com/DzdzTt88  Первым идёт пример на мунспике, чтобы вы не заглядывали вниз и попробовали понять, что же там творится.
[17:30:16] gds вышел(а) из комнаты
[17:34:50] iNode вышел(а) из комнаты
[18:15:04] gds вошёл(а) в комнату
[18:53:47] Kakadu вышел(а) из комнаты
[18:54:49] arhibot вышел(а) из комнаты
[19:48:40] komar вошёл(а) в комнату
[20:05:20] serp256 вышел(а) из комнаты
[20:10:10] <komar> gds: ни за что не поверю, что ты опечатался.
[20:11:42] <komar> (я про «ободряю»)
[20:20:26] <gds> к тому времени я около полутора суток с очень редкими перерывами разбирался в х-евом коде и пытался портировать его известно куда (перерывы на сон порядка 5 часов и на foxpro/dos 2.6 порядка 3 часов).  Действительно опечатался, в preview не глядел (ибо он в текущем жыжышном интерфейсе чрезжопный), хотя обычно гляжу.  Вот и.
Но получилось не так уж смешно (http://zabivator.livejournal.com/453919.html, если кто-то не видел).  Бывают и более смешные опечатки.  Вот их как раз стоит делать специально.
[20:29:41] Kakadu вошёл(а) в комнату
[20:34:22] arhibot вошёл(а) в комнату
[21:39:17] Typhon вышел(а) из комнаты: Replaced by new connection
[21:39:23] Typhon вошёл(а) в комнату
[21:42:27] ygrek вошёл(а) в комнату
[22:04:24] ʇsʎɯ вышел(а) из комнаты
[22:08:56] komar вышел(а) из комнаты: Replaced by new connection
[22:08:57] komar вошёл(а) в комнату
[22:19:35] komar вышел(а) из комнаты
[22:47:06] ermine вышел(а) из комнаты
[22:59:03] <Kakadu> итак, юзать при разработке janestreetовскую Core_extended хорошая идея или плохая?
[23:01:47] <ygrek> поюзай и расскажи нам :)
[23:02:12] <ygrek> я обхожусь extlib'ом, но в core много всяких вкусностей (специфических)
[23:02:33] <ygrek> плюс учти build зависимость на sexplib и binprot
[23:02:34] <Kakadu> понятно
[23:04:15] <Kakadu> я просто на днях посмотрел лекцию какого=то мужика про Efictive ML
[23:04:20] <Kakadu> Effective*
[23:04:48] <Kakadu> думаю может поразвалечься с janestreetовской поделкой
[23:05:41] zert вышел(а) из комнаты
[23:11:03] <Typhon> "какого-то мужика" -- yminsky чтоле? :)
[23:11:13] <Typhon> емнип, он про effective ml толкал
[23:11:26] <Kakadu> да
[23:11:48] <Kakadu> там ещё вторая лекция есть, но руки не дошли
[23:14:01] <gds> интересны впечатления первого человека, взявшего core janest, который сам не из janest.
не спорю, там скорее всего действительно всё в шоколаде, но интересно чем жертвуют.
[23:14:45] <ygrek> а подробнее для лузеров которые не смотрели лекцию?
[23:16:37] <Kakadu> ну ymnisky пришел в Гарвард и начал рассказывать про паттерн-матчинг. а потом про фантомные типы
[23:20:19] <gds> гм, да и я такое могу тоннами генерить.  А прикол в чём?  Он там небось какую-то мысль суровую задвигал?
[23:22:00] <gds> или там в конце все умерли?
[23:22:03] <Kakadu> коротко - он пиарился
[23:22:22] <Kakadu> недостаки алг. типов он превратил в плюсы
[23:22:40] <gds> своей компанией пиарился?
а какие недостатки он превращал?
[23:23:24] <Kakadu> ну то, что если дописать ещё дин вариант, то во всех паттерн матчнгах придется исправлять
[23:24:10] <Kakadu> ну рассказал что они занимаются проведением транзакций при оплате на бирже и им важно чтобы рабтало надежно (т.е. компилится == работает )
[23:25:41] <Kakadu> gds: Он рассказывал про фантомные типы для чайников, а http://gds.livejournal.com/54011.html - не для чайников
[23:25:49] <gds> насчёт "придётся исправлять" -- это разве недостаток?
[23:26:03] <Kakadu> ну это может быть неудобно
[23:26:16] <Kakadu> я это не сам придумал, а прочитал в fprog
[23:26:48] <ygrek> ну можно и не исправлять, это ж ворнинг по дефолту?
[23:27:06] <Kakadu> да, но потенциальный креш
[23:27:12] <ygrek> можно и ворнинг отключить если после питона баттхёрт происходит :)
[23:27:31] <Kakadu> если бы у нас было наследование и недоперегруженная функция, то креша не случилось бы
[23:27:33] <ygrek> а против крэша try .. catch _ -> ()
[23:27:41] <ygrek> да ну? %)
[23:27:52] <ygrek> pure virtual
[23:29:07] <Kakadu> короче все вопросы к Душкину
[23:29:19] <Kakadu> http://fprog.ru/2010/issue4/roman-dushkin-existentials/
[23:32:01] <gds> так вот, а какие варианты ещё есть, если есть алгебраический тип данных?  (тот, который даёт гарантии.)
Если чо, оформлять в коалгебраический с поведением по умолчанию, смотря какое нужно поведение.  Ну, это ооп-паттерны.  Я не силён.
[23:33:16] <Kakadu> я не силен в коданных, но Р.Душкин пиарит тайпклассы
[23:37:55] <gds> с другой стороны, я не знаю, какой, например, жж-юзернейм соответствует душкину, но по тому, как его критиковали (думаю, затейливого цитирования там не было), он пишет xynty.  А ещё он использует ключевое слово х-я "forall", которое соответствует квантификатору "exists".  Я и в чятике писал, и знакомого х-югу травил, и безрезультатно (в апстриме не пофиксили...).  Просто "ты понимаешь, что вот полиморфизм второго ранга это совсем не полиморфизм первого ранга, который хиндли-милнера, и в 2-r, там, где пишут forall, /имеют ввиду/ exists, но в 1-r там, где пишут forall, имеют ввиду forall".  Я примерно понял, как кавказец из известного анекдота про сол и вилька, но запоминать в общем случае не стал.
[23:38:58] <Kakadu> а что такое "х-я"
[23:39:00] <Kakadu> ?
[23:39:10] <gds> хаскелля, конечно.
[23:39:27] <Kakadu> а я совсем жругое подумал)
[23:39:47] <gds> ну, это просто сокращение такое, чтобы долго не писать...
[23:40:00] <gds> никаких намёков.  На х-евый код, в том числе.
[23:41:30] <Kakadu> xynty.livejournal.com не открывается
[23:41:38] <Kakadu> может не такой ник*
[23:41:40] <Kakadu> ?
[23:41:43] ygrek вышел(а) из комнаты
[23:41:50] ygrek вошёл(а) в комнату
[23:42:17] <gds> это не ник, это характеристика его исходящих текстов.
[23:42:18] komar вошёл(а) в комнату
[23:42:44] <ygrek> Kakadu совершенно не въезжает в местный диалект :)
[23:43:06] Kakadu офигевает
[23:43:10] <gds> да фигня тот диалект.  Если что, я всем всё объясню на пальце.
[23:43:16] <gds> или на пальцах..
[23:45:19] <komar> Kakadu: здесь почему-то нельзя писать слово «хуита» по-русски.
[23:46:03] <Typhon> жж юзер душкина -- _darkus_
[23:46:19] <Typhon> а он пишет не это слово, скорее, а перегруженный слишком текст
[23:46:40] <gds> komar: по факту, оказывается, можно, но очень не рекомендуется.  Не знаю, почему, но это факт.
[23:46:43] <Typhon> воды полно, смысла -- на два абзаца
[23:46:58] <Kakadu> komar: здесь - это где?
[23:47:20] <komar> Kakadu: ну вот у меня «здесь» — это такое текстовое поле внизу чятика.
[23:47:21] <Kakadu> komar: в данной конфе, или на всём сервере?
[23:49:33] <Typhon> интересно встретить paper "Scalable I/O Event Handling for GHC" в Recent Google Publications.
[23:53:32] <gds> Typhon: ну вот ты, допустим, разбираешься, а вот я читаю его статейку про existentials, и вижу, что там он всеми силами пытается объяснить людишкам, что к чему.  И смысл там -- для разных людей в разном.  (это как я читаю теорию категорий -- из пяти примеров вижу один понятный, его разгребаю, и только потом понимаю, где там какой смысл.)
Кривизна в его текстах ощущается явная, так что учебник был бы лучше.  С другой стороны, изредка почитываю его (как оказалось!) перевод "Физика, топология, логика и теория вычислений: новый Розеттский камень", потому что английское идёт хуже.
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!