f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
[00:46:10] <komar> gds: круто. [00:46:13] <komar> Ответ зощитан. [00:59:21] ftrvxmtrx вышел(а) из комнаты [01:05:14] <gds> komar: я тоже показываю, как некрасиво получается, когда одна сущность прикидывается другой сущностью. А именно, на окамле стоило бы написать что-то типа value r2l fold_right = fun userfunc init coll -> fold_right (fun acc elem -> userfunc elem acc) coll init -- тут и типами можно ограничить, и не маяться в возможных ошибках типизации. Кстати, одно то, что я читаю Typhon и komar и в rss -- уже оправдывает существование моей rss-читалки и радость от неё (а читалку изначально завёл для чтения friendfeed/larhat). Так-то. [01:06:38] <gds> Typhon: про edsl напоминаю -- если что-то сформулируется, сообщи. Да может и чятику будет интересно. [01:08:27] <Typhon> а, про edsl я немного не так распарсил, посмотрел выше в лог -- там ничего нету на тему (я искал зачина темы), поэтому сейчас недостаточно информации, что ли [01:28:48] <gds> Typhon: начал было описывать идею про edsl в чятик, но она недоработанная. я её кое-где сохранил, плюс к тому, появился ещё вариант, не хуже того, который хотел опубликовать. поэтому я ещё подумаю чуток, чтобы если даже не выбрать одну, то хотя бы опубликовать несколько альтернатив. [01:35:54] <gds> а вот для парвела таки понял, что лучше тип плюс метаинфу (имя, версию, способы сериализации) закатывать в модуль. Там чотче выходит и с json-static, и проще ограничить мономорфность типа (требовать от модуля "type t" без типовых параметров надёжнее, чем рассчитывать на то, что функция типа "output_value : typeinfo 'a -> 'a -> IO.m unit" будет использоваться только с фиксированным типом аргументов, а не с typeinfo (list 'a) и list 'a, например). Хотя, всё равно, вопросы доверия. Вопрос не в том, как сделать надёжно (ибо никак), а в том, как сделать юзабельно, но при этом не слишком хлипко. [01:50:31] gds вышел(а) из комнаты [02:09:09] ftrvxmtrx вошёл(а) в комнату [03:37:15] letrec вошёл(а) в комнату [04:14:08] Typhon вышел(а) из комнаты [04:39:56] letrec вышел(а) из комнаты [05:30:33] ftrvxmtrx вышел(а) из комнаты [05:30:41] ftrvxmtrx вошёл(а) в комнату [05:39:19] ftrvxmtrx вышел(а) из комнаты [07:05:30] ftrvxmtrx вошёл(а) в комнату [08:04:25] gds вошёл(а) в комнату [10:11:36] komar вышел(а) из комнаты: Replaced by new connection [10:11:36] komar вошёл(а) в комнату [10:23:18] bobry- вошёл(а) в комнату [10:31:32] <gds> хочется расширить модуль (допустим, List) двумя разными независимыми способами, да так, чтобы в результирующем модуле были оба дополнения. да без гемора (в том числе без явного выписывания сигнатур). no wai? [10:34:16] <bobry-> gds: в смысле оба раза ты хочешь расширять "оригинальный" List? [10:34:23] <gds> например да. [10:48:21] f[x] вышел(а) из комнаты [10:48:40] <gds> в общем, так случайно получилось, что одна либа по-любому использует другую, так что порядок расширения введён естественным образом. чисто повезло. [10:50:02] <bobry-> такое вообще возможно? добавить функцию во *внешний* модуль так чтобы она там и осталась, monkey patching чтоли [10:50:11] <bobry-> как то с трудом верится что камл такое позволяет [10:50:57] <gds> module List = struct include List; value myfunc = ...; end; [10:51:11] <gds> создаётся новый модуль. [10:51:29] <bobry-> ну это не совсем оно, все таки старый модуль остается неизмененным [10:53:09] <gds> но те, для кого List ссылается на новый модуль, вполне могут List.myfunc. Я это и называю расширением. [11:11:25] ermine вошёл(а) в комнату [11:12:08] zert вошёл(а) в комнату [12:40:43] Kakadu вошёл(а) в комнату [13:00:59] Typhon вошёл(а) в комнату [13:59:50] ftrvxmtrx вышел(а) из комнаты [13:59:58] ftrvxmtrx вошёл(а) в комнату [14:26:43] <bobry-> товарищи, а чем щас модно логировать? я вот нагуглил свеженький bolt, но как то он не очень [14:27:54] <Typhon> у ermine был логгер [14:27:56] <Typhon> логер [14:29:01] <gds> вот именно болт и рекомендуют -- живой автор у него, обещался фиксить-дописывать всё, что вписывается в концепцию логирования (ну понятно, патч примет). [14:30:37] <bobry-> хм, ну живой автор это безусловно плюс [14:30:57] <Typhon> у lwt, емнип, был свой логер [14:31:16] <gds> в принципе, ermine тоже живая. просто она не пеарила свою либу громко. [14:31:33] <Typhon> а у bolt'а есть синтакс екстеншн? [14:31:59] <Typhon> чтобы выпиливать лог-принты при компеляции, если лог-левел ниже, чем тот, что у них? [14:33:52] <gds> если вопрос ко мне -- не знаю, есть ли. источник моей инфы -- тупо рассылка. [14:36:03] <Typhon> вопрос к тыкавшим или знающим :-) btw, в #ocaml спрашивают про lwt на винде без libev, с селектом. помню в чятике собирали по-всякому на венде лвт. Kakadu ? или gds ? [14:36:23] <gds> я собирал с селектом. [14:36:27] <gds> ща вспомню. [14:37:45] <Typhon> о, а в оверблд свежем есть ли лвт? а то может чуваку показать, типа не парься, бери оверблд? :-) [14:37:54] <gds> да, есть. [14:38:00] <gds> отткуда и хочу ссылку найти на патч :) [14:38:13] <Kakadu> собирал [14:38:23] <Kakadu> там надо было что-то поправить в исходниках [14:38:33] <Kakadu> именно в исходниках [14:39:42] <gds> Typhon: http://overbld.hg.sourceforge.net/hgweb/overbld/overbld/raw-file/c37d9d347c45/src/lwt/patch/102_mingw__no_libev [15:03:37] f[x] вошёл(а) в комнату [15:38:29] <gds> жутко бесит http://paste.in.ua/2997/ , хочется взять и скомпилировать. [15:43:38] komar вышел(а) из комнаты [15:48:01] <Kakadu> gds: ну и правильно, ты сказал что у метода map есть аргумент, а сам пишешь как будто его нет [15:48:09] ftrvxmtrx вошёл(а) в комнату [15:48:23] ftrvxmtrx вышел(а) из комнаты [15:55:15] letrec вошёл(а) в комнату [15:55:18] letrec вышел(а) из комнаты [15:55:34] letrec вошёл(а) в комнату [15:58:47] <gds> Kakadu: как говорят молдаване, "это не имеет назначения!" -- http://paste.in.ua/2998/ [16:06:37] <Kakadu> gds: Может камло знает руководствуется изоморфизмом Карри-Говарда, когда так ругается? [16:07:05] <Kakadu> хотя нет, это не та система типов [16:07:17] <Kakadu> новерное.. [16:07:20] <Kakadu> а* [16:07:59] <Kakadu> и вобще мне надо проситать про ! [16:09:08] ftrvxmtrx вышел(а) из комнаты [16:10:46] ftrvxmtrx вошёл(а) в комнату [16:12:06] <f[x]> а что такое !'b. ? [16:27:51] <gds> f[x]: это revised syntax. в обычном вроде просто " 'b . ", но не помню. [16:28:09] <gds> Kakadu: да вообще, можно и вполне валидный пример сконструировать, дело не в этом. [16:30:34] <gds> вот в оригинальном синтаксисе: http://paste.in.ua/2999/ [16:33:21] <Kakadu> хм, без !'b ок [16:36:22] <gds> а насколько именно там ок? [16:36:33] <Kakadu> компилится) [16:36:41] <gds> типизируется -- значит работает!111111111 [16:37:22] <gds> (new cls 123)#map string_of_int FFUUUU [16:37:51] <Kakadu> интересно, почему я тоже подумал именно об string_of_int [16:38:07] <gds> потому что разные типы и работает в любых случаях? [16:38:59] <Kakadu> угу [17:20:28] bobry вышел(а) из комнаты [17:33:26] <gds> так вот, насчёт кадастра (есть такая мелкая либка) получается как-то не очень здорово: там я использую классы и объекты (для реюза функциональности, для упрощения жизни с этим всем добром -- сравните "MapIntToString.get mymap 123" vs "mymap#get 123"). теперь же некоторую функциональность оказывается возможно реализовать либо только через извращения, либо через модули (в том числе первоклассные). мну груфняво :(((999999999999888877 [17:34:19] <Typhon> ну если извращения не будут заметны пользователю, то я за первое [17:35:15] <gds> ща пытаюсь спарить объекты и модули невидимым (и непостижимым) образом, сообщу. [17:56:00] <gds> чую, я просто перебираю разные ошибки компилятора. http://paste.in.ua/3000/ [17:56:18] <f[x]> бгг [18:14:19] <Typhon> конкурс "получи самое большое сообщение об ошибке компилятора" [18:14:51] <gds> это полиморфные варианты надо. Тут скорее "самое затейливое". [18:36:49] komar вошёл(а) в комнату [18:43:25] <bobry-> товарищи, а как можно по изящней вот такое записать? http://paste.in.ua/3001 <http://paste.in.ua/3001/> -- хоть state monad изобретай [18:45:07] <gds> по-моему -- и так вполне прилично. ну или xen_memory + (bound (512 lsl 10, xen_memory / 4) delta) |> apply_static_bounds opts |> apply_xen_balloon_constraints opts |> fun memory -> do something [18:46:08] <bobry-> да, так неплохо, что то я забыл про |> совсем, спасибо [19:16:19] <f[x]> аргх, обнаружил в одном файле у себя алиасы для модулей - TT DD CC и UU [19:18:25] <gds> хехе, а у меня было подмножество таблицы менделеева: module Ti = Typeinfo; module Cd = Cadastr; module Sc = Services_common; [19:30:50] <gds> не, такое подозрение от этих игрищ/насилия, что для класса ['a] q невозможно определить метод, возвращающий ['b] q для какого-либо 'b. [19:42:29] -=matroskin=- вошёл(а) в комнату [19:43:12] <-=matroskin=-> ктож знал что тут это матом считается:-D вернее я один видимо не знал [19:43:33] <-=matroskin=-> ой пардон, не туда попал) [19:43:58] -=matroskin=- вышел(а) из комнаты: qutIM : Jabber plugin [19:44:06] letrec вышел(а) из комнаты [19:55:36] bobry- вышел(а) из комнаты [19:56:29] bobry- вошёл(а) в комнату [19:57:45] Typhon вышел(а) из комнаты [20:40:33] ftrvxmtrx вышел(а) из комнаты [20:40:40] ftrvxmtrx вошёл(а) в комнату [20:56:53] ygrek вошёл(а) в комнату [21:03:30] bobry вошёл(а) в комнату [21:04:15] Typhon вошёл(а) в комнату [21:30:12] <ygrek> > [Caml-list] Job offer: OCaml research engineer > The host team at INRIA Saclay [1] focuses on the study and improvement > of the OCaml language, and the development of a programming platform > for OCaml, in partnership with the OCamlPro company. [21:31:11] <komar> Кто-то осилит? [21:32:11] ftrvxmtrx вышел(а) из комнаты [21:33:06] <komar> Хм, да в письме не страшно совсем. [21:36:27] <Typhon> ygrek, емнип, в твоём ридлисте был "grabage collection" от richard jones -- http://gchandbook.org/ -- если не читал ещё, может быть и не стоит, вышло продолжение :-) [21:42:02] <ygrek> ы, автоматически-обновляемый ридлист - мечта же! [21:42:08] <bobry> :) [21:45:23] <ygrek> написано 2012 - ты его не смотрел ещё? [21:48:52] <Typhon> я так понял, что пока предзаказ можно сделать :-) [21:50:18] <Typhon> http://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795 хотя тут 2011 [21:50:24] <Typhon> и типа, заказать можно [21:50:39] <Typhon> но на library.nu ещё нет, не могу купить ^_^ [22:00:36] <ygrek> гг [22:01:08] <gds> о, у меня ещё одна редкая ошибочка: http://paste.in.ua/3002/ [22:05:40] <ygrek> _should be_ <-- что оно себе позволяет?? [22:08:51] <gds> да, хамство. а вот ещё: http://paste.in.ua/3003/ [22:09:02] <gds> тоже редкая. [22:11:12] <Typhon> о, эта у меня бывала, кажетс [22:22:45] ftrvxmtrx вошёл(а) в комнату [22:22:47] <Typhon> а вы уже попробовали параллельных сборок? ( http://twitter.com/#!/bmeurer/status/111490066320338944 ) [22:24:28] <gds> ну наконец-то. [22:35:38] Typhon вышел(а) из комнаты [22:50:21] ygrek вышел(а) из комнаты [22:50:35] ygrek вошёл(а) в комнату [22:56:11] ygrek вышел(а) из комнаты [22:57:04] ygrek вошёл(а) в комнату [22:57:04] ygrek вышел(а) из комнаты [22:57:21] ygrek вошёл(а) в комнату [23:01:09] ygrek вышел(а) из комнаты [23:20:54] <gds> ещё редкие (для меня) ошибочки: # type q = private < a : unit > ;; Error: This fixed type has no row variable [23:25:43] ermine вышел(а) из комнаты [23:27:40] <gds> перед вами -- три почти идентичных случая. разница -- record vs object vs class. Однако -- чорт побери -- первый случай типизируется, остальные -- нет. Кто тут хоть что-нибудь понимает? http://paste.in.ua/3004/ [23:40:40] klapaucius вышел(а) из комнаты [23:43:18] zert вышел(а) из комнаты [23:52:16] Typhon вошёл(а) в комнату