Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 31 мая 2011< ^ >
gds установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Портер прошлое -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:35] ftrvxmtrx вышел(а) из комнаты
[00:01:19] ftrvxmtrx вошёл(а) в комнату
[00:25:32] iconofstyle вышел(а) из комнаты: QIP Infium: Спокойное общение
[00:32:06] ygrek вышел(а) из комнаты
[00:47:45] ermine погуляла пару часиков
[00:48:14] <ermine> gds: не, итераты - не то, ибо совмещать оксиген и итераты - наверное нонсенс
[00:48:36] <ermine> а вот совместить комбинаторные парсеры и подстроки - интересная мысль
[00:50:35] <ermine> мне надо не всегда выделять в строку, а для сравнения как раз лень выделять
[00:50:53] <ermine> только вот интересно, как сравнивать с int (интернетного формата)
[00:51:32] <gds> ermine: очень хорошая идея про "комбинаторные парсеры и подстроки".  Например, http://hackage.haskell.org/packages/archive/attoparsec-iteratee/0.2.1/doc/html/Data-Attoparsec-Iteratee.html
[00:52:37] ermine пялится на находку в гугле http://ocaml-lib.sourceforge.net/doc/IO.html#6_BinaryfilesAPI
[00:54:18] <ermine> gds: ну на прогулке я вспомнила, что обожаю комбинаторные парсеры :)
[00:54:58] <gds> комбинаторы -- штука хорошая для высокоуровневого описания.  Например, есть комбинаторы поверх итератов.
[00:55:46] <ermine> gds: ообщем, дай-ка плиз ссылку на репу подстрок, чтобы не терять время в гуглении оной
[00:56:09] <ermine> уже хочу посмотреть как заюзать это в качестве буфера
[00:56:11] <Typhon> ermine, ocaml-lib -- это extlib старый штоле?
[00:56:33] <gds> кстати, любой комбинаторный парсер, работающий поверх строк / списков символов, легко запускается поверх итератов и даже внезапно начинает работать быстрее, ибо чанки.
[00:56:48] <ermine> Typhon: я подозревала что-то такое в этом роде
[00:57:57] <ermine> Typhon: но на прогулке я подумала о том, что буферизованный IO с read() - это как раз аллокация новой строки при каждом вызове read(), экономия только на числе вызовов сислоков, и решила, что эту беду надо оптимизировать
[00:58:21] <ermine> это в случае если читать как бы по 4 байта из канала
[00:58:24] <gds> ermine: https://bitbucket.org/gds/ocaml-substrings/ , но там хреново обстоят дела.  Беднота 100%.  Мне нужно было чисто для "интерфейса" -- тип данных, модуль, либа.  Но есть тонны кода, который туда можно переместить.
[00:58:55] <ermine> gds: посмотрим
[01:00:05] <gds> ermine: про буферизованный IO + read() -- ты в правильном направлении движешься.  Представь ещё такие функции, которые как бы читают буфер и возвращают статус -- "готов ли результат" (т.е. какой именно результат и что осталось в буфере), либо "что-то не ок" (нужны ли данные, и есть ли какая-нибудь ошибка разбора).
[01:05:09] <ermine> ой, там оазис
[01:06:50] <gds> substrings -- да, Typhon постарался.  Только я там погано зламал всё, горе мне.  Ибо оазис пока не поднял толком.
[01:06:50] <ermine> и ревизед
[01:07:09] <gds> revised -- да, я такой!
[01:07:30] <ermine> gds: что в ofs?
[01:07:58] <ermine> а, а у меня это обычно i называется
[01:08:03] <gds> смущение в байтах.
[01:08:19] <gds> упссет.
[01:10:29] Kakadu вышел(а) из комнаты
[01:11:28] <ermine> да, беднота сидит на бедноте и погоняет беднотой
[01:12:07] <ermine> вожделенного сравнения чота не видно
[01:12:55] <gds> ermine: спать пора потому что.  А так бы -- нарисовал бы в два счёта.  Причём даже два сравнения.
[01:13:15] <ermine> а так - у меня это называется модулем Input, туда еще добавляются функции consume или next или advance или junk и back
[01:14:23] <gds> спать -- потому что если сейчас не пойду, то на завтра нарисую сильно меньше в целом, общий эффект будет плох.
Про input -- понимаю.  У меня то, что у тебя input, называется FifoBuffer со своими процедурками для memmove, ресайза, отжирания данных.
[01:16:38] <ermine> а там бэктрейс есть?
[01:17:16] <ermine> вот если не жалко размахивать бэктрейсом, то функция back как бы не нужна, хотя была идея использовать для error recovery
[01:17:54] <ermine> back = unconsume, для недогадливых :)
[01:18:29] <gds> в FifoBuffer -- нет, ибо это как бы Stream.t char, только слегка другой.  В substrings -- back нет и быть не должно (это же подстроки, ё!).  А вот в iteratees -- вполне можно оформить backtrace, причём легко.
[01:18:31] <ermine> ладно
[01:19:35] <gds> чешутся руки пойти по примеру х-я (в хорошем смысле слова) и реализовать какой-нибудь glr поверх итератов.  Там бы и с backtrace решился бы вопорос.
[01:19:55] gds прощается с вами и желает всем счастливого пути.
[01:20:04] gds вышел(а) из комнаты
[01:20:08] <ermine> споки :)
[01:34:03] <ermine> ым, действительно, надо спать
[01:41:10] ermine вышел(а) из комнаты
[02:04:18] Typhon вышел(а) из комнаты
[02:37:33] zert вышел(а) из комнаты
[09:01:03] gds вошёл(а) в комнату
[09:07:38] <komar> А что обычно делают, если хотят, чтобы модуль в какой-то либе был недоступен вне этой либы?
[09:07:49] <komar> Просто не натравливают ocamldoc?
[09:14:08] <gds> komar: если просто .cmi не инсталлировать, не проканает?
[09:14:30] <komar> Именно .cmi? Не знаю, потом попробую.
[09:14:49] <komar> Как-то некрасиво получается.
[09:15:55] <gds> может это и неправильно даже.  Ждём правильного ответа.
[10:48:07] ermine вошёл(а) в комнату
[11:06:25] ftrvxmtrx вышел(а) из комнаты
[11:57:03] Typhon вошёл(а) в комнату
[12:00:34] ftrvxmtrx вошёл(а) в комнату
[12:37:05] <f[x]> в oasis пишешь InternalModules и он cmi устанавливать не будет
[12:37:54] <f[x]> о байты, ermine опять начинает оптимизировать
[12:38:10] <f[x]> кода ещё нет, а уже оптимизировать, во дела
[12:39:58] <komar> Преждевременная оптимизация ftw
[12:45:13] <gds> ftw = f-k the win?  Типа, "победа не нужна"?
[12:50:24] <komar> for teh win
[12:58:44] gds вышел(а) из комнаты
[13:27:24] Kakadu вошёл(а) в комнату
[13:32:28] <f[x]> аргх, me хотел было сделать let module M = if true then X else Y in
[14:00:35] ygrek вошёл(а) в комнату
[14:05:14] zert вошёл(а) в комнату
[14:52:06] ygrek вышел(а) из комнаты
[15:04:32] gds вошёл(а) в комнату
[15:36:07] <f[x]> gds: а чего ты news'ы по релизам не делаешь?
[15:36:10] <f[x]> я про ocaml-iteratees
[15:36:36] <f[x]> и пошарься там в админке включи hg как scm, а то на вкладке scm показывает пустой svn repo
[15:37:40] <gds> f[x]: news -- на форже самом?
[15:38:00] <gds> про scm -- раньше точно не было.  ща поищу обязательно.
[15:39:59] <f[x]> scm'ы должны были после апгрейда весной появиться
[15:40:08] <f[x]> news - да, на форже
[15:42:03] <f[x]> они потом и в планету попадают вроде
[15:42:48] <gds> "This Mercurial plugin is not completed yet."  хм.  но, в целом, что-то сделал: https://forge.ocamlcore.org/scm/?group_id=194
[15:43:18] <f[x]> ха
In contrast with the Big_int module from the OCaml standard distribution,
arbitrary-precision integers of type Z.t can correctly be compared
using OCaml's generic comparison operators (=, <, >, etc).  This
requires OCaml version 3.12.1 or later, though.
[15:43:26] <gds> можно ли сделать что-нибудь лучше, или забить и налепить новость?
[15:43:39] <f[x]> читеры, я помню тот коммит, ещё думал для кого те хуки
[15:44:09] <f[x]> да, так хорошо
[15:44:31] <gds> а что за проект вообще?  и какие хуки?  вроде compare было вытащено в abstract values (или как там их, где "таблица методов") давно, не?
[15:44:33] <f[x]> лепи новость, я просто changelog копипастю
[15:44:57] <f[x]> zarith
[15:45:08] <gds> у меня мутный changelog.  мне скорее надо в hg diff втыкать глазками.
[15:48:38] <f[x]> см r11037
[15:48:49] <f[x]> compare_ext
[16:05:25] <gds> посмотрел дифф, понял всё.
[16:06:08] <gds> новость лепить -- прямо в проекте, "Добавить новость"?  И она на глагне попадёт потом сама?
[16:07:02] <f[x]> админы вынесут
[16:13:48] <ermine> хм, надо собирать новый оазис
[16:44:11] ygrek вошёл(а) в комнату
[17:01:37] <gds> судя по авторам zarith ( https://forge.ocamlcore.org/project/memberlist.php?group_id=243 ), понимаю, почему был выпущен патч к компилятору.
[17:13:29] ygrek вышел(а) из комнаты
[17:19:07] gds вышел(а) из комнаты: Replaced by new connection
[17:19:07] gds вошёл(а) в комнату
[18:20:06] <ermine> gds: tr.[0] аллокатит память?
[18:20:29] <gds> на непереопределённом String -- нет.
[18:20:29] <ermine> str.[0]
[18:21:11] <ermine> не поняла прилагательное
[18:21:57] <gds> = "в области видимости выражения str.[0] имя модуля String привязано к модулю String из ocaml stdlib"
[18:22:06] <ermine> а, речь про родной модуль
[18:23:18] <ermine> хм, ну тогда ведь можно сравнивать две подстроки или подстроку со строкой без аллокаций
[18:23:39] ermine всё равно скоро убежит, опять толком не начав код
[18:24:26] <gds> конечно можно сравнивать, чо.  Если 8-битные символы, то можно даже unsafe_get или сишечькой.
[18:24:51] <ermine> только вот если функция get возвращает char option, то ведь будет аллокация
[18:25:07] <gds> не нужно использовать функцию, возвращающую char option.
[18:25:44] <ermine> ну она определена в модуле подстрок (типа как у тебя)
[18:26:06] <ermine> а внешнее чудо не может знать, есть ли там еще в строке данные или нет
[18:29:04] <gds> ты очевидно делаешь не строки.
[18:48:46] <ermine> ну это как бы стрим
[18:49:14] <ermine> надо будет погулять и подумать
[18:52:06] <ermine> gds: а границы строки - это дополнительная проблема просто
[18:53:14] <ermine> плюс вопрос подкачки новых строк и отсечения лишних голов, когда для бэктрейса они явно не понадобятся, а новые строки придется приклеивать к старой
[18:54:10] <gds> проблема будет дальше, когда поймёшь, что "по символам/строкам" ходить -- этого мало.
а я зафигачу в итераты поддержку строк вдобавок к поддержке массивов (хоть даже на уровне Obj.tag смотреть).
[19:01:21] <ermine> мухлёж
[19:02:13] <f[x]> ermine: мухлёж это хуки в компиляторе, а obj это так, детский сад
[19:02:28] zert вышел(а) из комнаты
[19:08:03] Kakadu вышел(а) из комнаты
[19:11:07] zert вошёл(а) в комнату
[19:24:57] zert вышел(а) из комнаты
[19:28:53] komar вышел(а) из комнаты: Replaced by new connection
[19:28:55] komar вошёл(а) в комнату
[20:04:47] komar вышел(а) из комнаты: Replaced by new connection
[20:04:48] komar вошёл(а) в комнату
[20:05:03] ftrvxmtrx вышел(а) из комнаты
[20:46:11] komar вышел(а) из комнаты: Replaced by new connection
[20:46:12] komar вошёл(а) в комнату
[21:01:09] zert вошёл(а) в комнату
[21:19:41] ftrvxmtrx вошёл(а) в комнату
[21:47:50] ygrek вошёл(а) в комнату
[22:25:53] Typhon вышел(а) из комнаты
[22:58:52] komar вышел(а) из комнаты: Replaced by new connection
[22:58:53] komar вошёл(а) в комнату
[23:07:35] <ygrek> а как создать функтор создающий модуль с приватным типом?
[23:11:00] <ermine> странного хочется?
[23:13:05] <ygrek> в beginners хотел ответить, а не получается /o\
[23:13:45] <ygrek> http://codepad.org/xD8KLpgW
[23:13:56] <gds> http://paste.in.ua/2503/
[23:13:57] <ygrek> у них там камль древний
[23:14:32] <gds> ygrek: а раньше был баг там?
[23:14:37] <ygrek> gds: а теперь примени этот функтор
[23:15:06] <gds> так это совсем другое техническое требование!11
[23:15:14] <ygrek> # module M = F(struct end);
module M : sig type t = <abstract>; value zero : t; end
[23:15:27] <ygrek> не, он не создаёт модуль с приватным типом!
[23:15:28] <gds> # module Q = F(struct end);
module Q : sig type t = private int; value zero : t; end
#
[23:15:39] <ygrek> хороши дела!
[23:16:13] <gds> замечательные просто!  Видимо, фиксють.
[23:16:40] <ygrek> таки да, в 3.12+svn всё ок
[23:16:45] <ygrek> ясно, спасибо
[23:28:30] Typhon вошёл(а) в комнату
[23:45:05] <ygrek> http://blogs.msdn.com/b/vorov/archive/2011/05/31/10169673.aspx
[23:45:09] <ygrek> к-ц
[23:48:02] <Typhon> "лишней косвенности в виде виртуальных функций" -- что за виртуальные функции?
[23:48:36] <ygrek> а bullshit про полиморфные варианты?
[23:48:47] <gds> не к-ц, а п-ц.
[23:49:00] <ygrek> ф-й п-ц
[23:49:23] <Typhon> я не дочитал пока, сейчас читаю, ужасаюсь
[23:49:36] <Typhon> ну так чувак, наверное, ещё и MS VS кодъ пишет
[23:51:20] <Typhon> основная претензия, судя по последующему фл-су этой Ele -- апострофы %)
[23:57:22] <Typhon> вот есть совет для пейсателей таких совет. точнее для родителей оных http://www.youtube.com/watch?v=fEYceCWI_h0 (обсценная лексика)
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!