Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 7 сентября 2011< ^ >
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 вошёл(а) в комнату