Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 5 апреля 2011< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Вики -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on | Здесь бывает ermine!!111
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:16] gds вышел(а) из комнаты
[00:24:04] komar вошёл(а) в комнату
[00:25:28] Kakadu вышел(а) из комнаты
[03:11:17] <Typhon> а напомните, будь ласка, как там тип функции записывать, чтобы можно было и аргументы сразу записать, а не "= fun a b -> "?
[03:20:35] <Typhon> http://paste.in.ua/2057/
[03:26:21] <Typhon> и даже проще: http://paste.in.ua/2059/ -- если убрать претти принтинг и дубликацию некоторую
[04:57:17] <Typhon> осталось понять, чем это лучше val show : ('a -> string ) -> 'a -> string  какого-нибудь
[04:57:21] Typhon вышел(а) из комнаты
[07:27:50] iNode вышел(а) из комнаты
[08:20:14] iNode вошёл(а) в комнату
[08:40:01] komar вышел(а) из комнаты: Replaced by new connection
[08:40:01] komar вошёл(а) в комнату
[08:59:24] gds вошёл(а) в комнату
[09:06:03] <gds> Typhon: кстати да, интересно, чем же это лучше.
[10:27:09] Typhon вошёл(а) в комнату
[10:28:42] ermine вошёл(а) в комнату
[10:29:52] <Typhon> gds: я пока не пойму :-( я кодэ quickcheck хочу упростить, попробовал вот всякие first class modules, но вчера закончил на том, что явно функции передавать проще. минус — расширяемость, если понадобится в в show уметь не только ('a -> string) а ещё что-нибудь, придётся во всех местах, где использовалось дописывать это. но это решается с помощью рекорда с функциями, этакий класс тайп х-левый, только явно передаваемый. на этом пока остановился. надо читнуть подробнее папирки от олега про первоклассные модули
[10:29:54] iNode вышел(а) из комнаты
[10:31:57] <f[x]> rm _build -> make clean
[10:32:07] <f[x]> Typhon: http://groups.google.com/group/erlang-russian/browse_thread/thread/2bc1e9402c88b2b
[10:33:01] <Typhon> f[x]: да, это я потом увидел, я хотел глянуть на все принятые предложения на гсок
[10:33:42] <Typhon> f[x]: make clean сути вроде не меняет — всё равно надо руками чистить, получается.
[10:33:53] <gds> вот федорасты!
[10:34:33] <f[x]> угу угу
[10:39:50] ftrvxmtrx вышел(а) из комнаты
[11:47:40] ftrvxmtrx вошёл(а) в комнату
[11:53:03] <Typhon> вот ещё: с модулями я могу расширяемые "тайп классы" делать, для выражения зависимость (Functor a => Monad a , например, или как там). с рекордами я не знаю, как расширять их так и всё такое. вариант ещё объекты поюзать. (мне вообще для упрощения квикчека констрейнты и расширения не нужны, я просто попутно думаю про это).
[11:55:06] <gds> ага, тоже думал про расширяемость модулей.  на объектах/классах может и получилось бы.
[11:57:11] Typhon вышел(а) из комнаты
[12:08:04] Typhon вошёл(а) в комнату
[12:26:07] ftrvxmtrx вышел(а) из комнаты
[12:26:32] ftrvxmtrx вошёл(а) в комнату
[12:26:36] ftrvxmtrx вышел(а) из комнаты
[12:26:50] ftrvxmtrx вошёл(а) в комнату
[12:28:43] <Typhon> на модулях достаточно ок расширяется http://paste.in.ua/2060/ не нравится bool / pbool , надо подумать над этим
[12:30:53] Kakadu вошёл(а) в комнату
[12:30:57] <Typhon> (http://paste.in.ua/2061/ с подсветкой)
[12:40:20] ftrvxmtrx вышел(а) из комнаты
[12:40:46] ftrvxmtrx вошёл(а) в комнату
[13:24:19] gds вышел(а) из комнаты
[13:24:23] gds вошёл(а) в комнату
[14:17:17] gds вышел(а) из комнаты
[14:19:50] <Kakadu> я правильно понимая что QuickCheck Это ещё один deriving?
[14:20:46] <Typhon> не
[14:20:59] <Typhon> http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck
[14:23:46] iNode вошёл(а) в комнату
[14:41:53] iNode вышел(а) из комнаты
[15:10:06] gds вошёл(а) в комнату
[15:55:47] ftrvxmtrx вышел(а) из комнаты
[15:56:04] ftrvxmtrx вошёл(а) в комнату
[16:06:10] iNode вошёл(а) в комнату
[16:48:11] <gds> делаю ocamlfind ocamlc -linkpkg ... -o my.byte и получаю:
/usr/local/lib/ocaml/3.11.2/lwt/liblwt-unix.a(lwt_unix_stubs.o): In function `cst_to_constr':
lwt_unix_stubs.c:(.text+0x6dad): multiple definition of `cst_to_constr'
/usr/lib/ocaml/libunix.a(cst2constr.o):(.text+0x0): first defined here
collect2: ld returned 1 exit status
сейчас начну копать, но вдруг кто-нибудь сходу знает, в чём дело?
[16:49:30] <gds> вот чисто опции: -linkpkg -package unix -package threads -package str -package parvel -package lwt.unix -package lwt -package json-wheel -package json-static -package mypkg -thread
[16:50:51] <f[x]> кто-то скопировал код cst_to_constr
[16:51:30] <f[x]> вместо того чтобы просто сигнатуру указать
[16:54:27] <gds> факт.  lwt-2.2.1/src/unix/lwt_unix_unix.c.  А интересно, все-все функции проверяются на несовпадение имён в .a/.o?  Получается, у сишечьки общее пространство имён для всех функций?
[16:56:01] <Typhon> да
[16:56:27] <f[x]> ну дык
[16:57:00] <gds> кстати вот, заметил, что в том файле обычно функции либо CAMLprim, либо static.
[16:59:23] <f[x]> static -> файл-scope
[17:01:31] ermine озирается в поисках архибота
[17:01:51] <gds> во.  Добавил static -- перестало ругаться.  Ну вот и замечательно.  Благодарю за помощь.
[17:02:32] Typhon вышел(а) из комнаты
[17:02:39] Typhon вошёл(а) в комнату
[17:02:43] <ermine> а статические функции экономят место в памяти?
[17:03:30] <f[x]> ага, линкер их в секции антиматерии размещает
[17:04:03] Kakadu чует сраказм
[17:05:05] <gds> есть идеи, куда бы им патч присунуть?
[17:06:35] <Typhon> у них трак был, я туда присылал, сейчас что-то нету его, наверное в ocsigen рассылку
[17:07:53] <ermine> речь про lwt?
[17:08:31] <ermine> если да - патч можно аффтару почтовыми голубями послать
[17:16:56] <f[x]> gds: можно ещё так - http://git.ocamlcore.org/cgi-bin/gitweb.cgi?p=extunix/extunix.git;a=blob;f=src/atfile.c;h=62ce7cbbf8eee4caafd71a4f1ea66483c00f9412;hb=HEAD#l11
[17:22:41] <gds> f[x]: да, можно extern, но если есть гарантии, что всегда будут линковать с libunix.a.  Мне проще допустить дубликацию кода (чужого, тем более).
[17:34:26] iNode вышел(а) из комнаты
[17:45:58] <f[x]> ок
[18:09:02] <gds> при переписывании с прямого ввода-вывода на lwt'шный нужно переписывать и отладочную печать в том числе?  А если не хочется, есть другие варианты?
[18:13:51] <gds> мда, и вот не ясно, что делать с with-идиомой.  классический фейл: with_file (... Lwt_io.read ... >>= Lwt.return ()), ну да, и lwt-значение вычисляется, и файл закрывается, а потом дело доходит до непосредственно выполнения Lwt_io.read.
[18:15:44] <f[x]> добро пожаловать в увлекательный мир асинхронного управления ресурсами
[18:16:07] <Typhon> Lwt_io.with_file был же
[18:16:23] <Typhon> let lwt_with_file_out = Lwt_io.with_file ~mode:Lwt_io.output
[18:16:38] <gds> вроде можно синхронизировать.  до манатки открывать файл, а потом Lwt.catch и закрывать.
[18:18:07] <gds> Typhon: конкретные Lwt_io.with_* -- это хорошо, буду смотреть/использовать.  Но более общее решение было бы не лишним, ибо http://paste.in.ua/2065/
[18:18:26] <gds> ну и другие подобные штуки, менее эффектные, правда.
[18:18:42] <Typhon> http://paste.in.ua/2066/ ( lwt_with пользование)
[18:18:49] <Typhon> типа у тебя там своих with полно ?
[18:18:57] <Typhon> надо, наверное, глянуть, как они with делают
[18:19:37] <gds> пример посмотрел, понял идею.
[18:21:46] <gds> своих with -- достаточно, да.
может, что ли, параметризовать with-хрени действительно манаткой, чтобы и в прямом вводе-выводе, и в монадном код был одинаковым?  прямой ввод-вывод -- фактически монада, где "носитель" равен "носимому" типу, исключения распространяются неявно, catch = try-with, error = raise, то есть, может и получится что...
[18:26:08] <Typhon> или в манатку засунуть with штуки?
[18:32:37] <gds> придётся в две пихать (ну или вообще, иметь два кода, один с прямым try-with, другой с IO.catch).
[18:35:05] <zert> http://plixi.com/p/89219302
[18:43:37] <ermine> а это будет смешно, если из камля напрямую работать с гит объектами?
[18:44:11] <Typhon> ermine: нет, это будет вполне ок, ящитаю, хуже если выхлоп гитовый парсить
[18:44:16] <ermine> вот бы спросить архибота, до какой степени прямизны он с этим вошкается
[18:44:59] <ermine> Typhon: а как делать дифф? вроде был какой-то mldiff, посмотреть чоль
[18:45:16] <Typhon> ну вот дифф я бы гиту доверил делать :-)
[18:45:48] <ermine> Typhon: через что?
[18:46:18] <Typhon> в смысле, через что? ну просто бинарник запустить и на выхлоп посмотреть
[18:46:27] <ermine> Typhon: а что тогда входит в понятие "работать напрямую с объектами гита"? - создать и всё?
[18:46:50] <ermine> ну кроме прочтения/расшифровки объекта
[18:47:07] <Typhon> коммиты / теги / деревья / ветки создавать
[18:47:12] <Typhon> писать туда / читать оттуда
[18:47:27] <ermine> это всё создать
[18:47:41] <ermine> а диффффф?
[18:49:15] ermine прислушалась к скрипу воображения Typhon
[18:49:46] <ermine> ладно, это так, мечты пока что, надо бы еще дочитать гитбук
[18:51:08] <Typhon> ну дифф можно и руками делать, но разве ж хочется? если готовая либа есть — то можно. или если хочется написать, то тоже можно. в питоне каком-нибудь есть difflib'ы вроде разные
[18:53:20] <ermine> значит, ты не видел mldiff
[18:54:13] <Typhon> увидел, это не либка, правильно? если можно её как либку поюзать то здорово
[18:54:55] <ermine> хз, я уже всё что об этом помню, так это его название
[18:58:25] Kakadu вышел(а) из комнаты
[19:35:12] ermine принюхалась к названию будущего проекта "ogit" и отвергла его
[19:38:35] <Typhon> чисто к "драйверу" название? или к какому-то стораджу, который в гите хранит?
[19:39:34] <ermine> к стораджу
[19:39:45] <ermine> запихнуть коммит
[19:49:07] ftrvxmtrx вышел(а) из комнаты
[19:50:24] Typhon вышел(а) из комнаты
[19:55:09] Kakadu вошёл(а) в комнату
[20:09:29] iNode вошёл(а) в комнату
[20:25:16] <zert> ermine: ergit
[20:27:12] <f[x]> enlargit
[20:31:50] <ermine> f[x]: от тебя логичнее ожидать nihgit
[20:51:09] <ermine> может и правда так назвать...
[21:24:42] avysk вошёл(а) в комнату
[21:32:23] avysk вышел(а) из комнаты
[21:36:08] Typhon вошёл(а) в комнату
[21:38:33] Typhon вышел(а) из комнаты: Replaced by new connection
[21:38:37] Typhon вошёл(а) в комнату
[21:40:39] <Typhon> giska ^_^ (GIt Storage written in KAmlo )
[21:43:02] <gds> в нашей деревне есть поддеревня "гиска", населена малдаванами чуть более чем полностью, и даже выражение есть -- "танцор с гиски".  Но для проекта -- лично у меня не вызывает отрицательных ощущений.
[21:45:00] <ermine> да, гиска даже лучше
[21:49:37] <zert> GNOME ISnt KAmlo
[21:50:52] <ermine> гиська!
[21:50:56] Typhon вышел(а) из комнаты
[21:51:19] Typhon вошёл(а) в комнату
[21:52:45] <ermine> аж аффтара переконнектило
[21:52:53] <Typhon> Ganhubas IS KArasho %)
[21:52:59] <Typhon> *j
[21:53:42] ermine немедленно выполнила mkdir giska; cd gicka; git init
[21:54:39] <ermine> а что дальше?
[21:54:51] <ermine> смотреть в исходники гита на формат объектов?
[21:55:14] <ermine> а они не меняются от фонарного столба к сделующему столбу?
[21:56:04] <Typhon> не должны. в pro git вроде про внутренности хорошо написано
[21:56:57] <ermine> pro?
[21:57:39] <zert> protiv git
[21:57:55] <Typhon> http://progit.org/book/ch9-0.html
[21:58:03] <ermine> ага, гугль его знает
[22:04:35] ermine полистала девятую главу
[22:04:42] <ermine> там работы на годы
[22:08:26] <gds> ermine: не бери работу на годы.
[22:08:42] <Typhon> ermine, почему так думаешь?
[22:09:30] <Typhon> я к тому ещё, что не обязательно всё ща делать, а по мере надобности низ делать. может там 80 % не понадобится для задачи.
[22:10:21] <ermine> Typhon: чота не видно  там, что копипастить :(
[22:10:53] <ermine> да и нет рассказки step-by-step, что и как делать
[22:11:01] <Typhon> для копипастить можно взять, наверное, существующую работалку, хоть на питоне
[22:12:10] <ermine> да ладно, я лишь утрировала
[22:12:13] <Typhon> (ну или прямо в гит смотреть :-) )
[22:12:32] <gds> если ты смотришь в гит -- гит смотрит в тебя.
[22:13:17] <ermine> и ждет, когда я допущу фатальную ошибку
[22:50:50] ftrvxmtrx вошёл(а) в комнату
[23:17:22] ermine вышел(а) из комнаты
[23:31:04] <gds> в общем, решил так.  мои with-функции будут параметризованы монадой, но в рамках окамловских типов это будет неявно и совсем не важно, параметрический полиморфизм поможет.  но with-функции будут явно состоять из двух функций -- создание и освобождение ресурса.  без этого было геморно их комбинировать даже в простом императивном раскладе, в монадном тем более.
[23:40:26] <Typhon> тем временем в твиттере "If only #erlang had been statically typed with polymorphic variants..." http://twitter.com/#!/jlouis666/status/55351735547461632
[23:47:01] iNode вышел(а) из комнаты
[23:50:58] Typhon вышел(а) из комнаты
[23:57:33] gds вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!