Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 6 декабря 2011< ^ >
ygrek установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire
Конфигурация комнаты
Участники комнаты

GMT+4
[00:33:43] Андрей Ковбович вышел(а) из комнаты
[00:40:11] Typhon вышел(а) из комнаты
[00:45:03] Typhon вошёл(а) в комнату
[01:13:23] Kakadu вышел(а) из комнаты
[03:30:35] Typhon вышел(а) из комнаты
[07:33:08] ermine вошёл(а) в комнату
[09:09:45] klapaucius вышел(а) из комнаты
[09:34:10] bobry вошёл(а) в комнату
[09:34:10] bobry вышел(а) из комнаты
[09:50:31] bobry вошёл(а) в комнату
[09:50:31] bobry вышел(а) из комнаты
[10:19:15] <ermine> таак, с peg сё хорошо и пора генерить код по нему
[10:19:25] <ermine> блин, опять вспоминать, что такое camlp4
[11:19:22] komar вышел(а) из комнаты: Replaced by new connection
[11:19:22] komar вошёл(а) в комнату
[11:22:43] arhibot вошёл(а) в комнату
[11:28:29] arhibot вышел(а) из комнаты
[11:42:47] ftrvxmtrx вошёл(а) в комнату
[12:00:38] Kakadu вошёл(а) в комнату
[12:12:49] <f[x]> риторический вопрос : сколько нужно французов чтобы обновить мантис?
[12:16:50] <Kakadu> 10 крутят электрогенератор для компьютера. Один обновляет мантис.
[12:21:57] <f[x]> пфф, неправильно
[12:22:25] <Kakadu> почему?
[12:22:28] <f[x]> 10 пишут доказательство корректности апгрейда
[12:22:41] <Kakadu> на коках?
[12:25:32] <Kakadu> gds: я хз будут ли на этой недели у тебя тайблвьюшки. Я тут понял, что написал какую-то лажу в генераторах. Не то, что оно не работает, но криво написано (хоть из шляпы доставай имплициты)
[13:13:24] shaggie вошёл(а) в комнату
[13:27:06] <Kakadu> почему в последнее время про окамлпро ничего не слышно?
[13:30:09] <f[x]> может они пишут больше код чем блог?
[13:33:27] <Kakadu> а почему гитхаб не обновляется
[13:33:28] <Kakadu> ?
[13:35:50] <f[x]> типа раньше его сразу обновляли
[13:36:42] komar вышел(а) из комнаты
[13:37:04] komar вошёл(а) в комнату
[13:38:39] bobry вошёл(а) в комнату
[13:49:26] komar вышел(а) из комнаты: Logged out
[13:49:29] komar вошёл(а) в комнату
[13:53:25] komar вышел(а) из комнаты: Logged out
[13:53:28] komar вошёл(а) в комнату
[13:59:32] bobry вышел(а) из комнаты
[14:00:06] <Kakadu> если люди из Paparazzi делают на камле софт для беспилотников, то из надо в RealWorld добавлять?
[14:00:11] <Kakadu> их*
[14:01:41] komar вышел(а) из комнаты: Logged out
[14:01:45] komar вошёл(а) в комнату
[14:06:33] klapaucius вошёл(а) в комнату
[14:31:46] komar вышел(а) из комнаты
[14:50:01] <gds> они точно читают наш чятик111  поняли, что коммунити нужно.  не прошло и 20 лет, штоле.
[14:50:37] <gds> Kakadu: ну да, всех нужно в RealWorld добавлять.
[15:04:17] <Kakadu> ermine: Что ты знаешь про Parsec?
[15:08:43] <ermine> знаю, что оно на хаскеле
[15:08:53] <Kakadu> и на фадиезе.
[15:09:10] <ermine> а еще он весь из себя комбинаторный!
[15:09:19] <Kakadu> я тут понял что на фадиезе вроде нет camlp4
[15:09:33] <Kakadu> ну да, комбинаторны-закомбинаторный
[15:10:24] <ermine> где нет?
[15:10:31] <Kakadu> F#
[15:10:48] <Kakadu> klapaucius: Буду рад, если ты скажешь что я не прав
[15:10:51] <ermine> там есть нечто парсекоподобное
[15:11:00] <Kakadu> FParsec
[15:11:05] <ermine> а зачем тебе фшарп?
[15:11:11] <Kakadu> диплом
[15:11:30] <ermine> а что ты парсить собрался?
[15:12:26] <klapaucius> Kakadu вы правы, аналога camlp4 для F# нет.
[15:13:01] <Kakadu> супер-цель: бершь код, который парсит fparsecом,
Анализируешь грамматики.
ДЛя одной парсер-функции генеришь рекурсивный спуск, для другой GLR
???
Профит
[15:13:02] <ermine> а почему его там нет?
[15:13:09] <Kakadu> потомучто пидарасы
[15:13:16] <Kakadu> и хорошо что его там нет
[15:14:10] <ermine> Kakadu: я тте скажу сразу, чтобы ты не брался парсить с++
[15:14:45] <ermine> про glr тебе небось втирал gds
[15:14:53] <Kakadu> ermine: нет, научник
[15:15:06] <ermine> а glr точно не осилит грамматику ни явы, ни с++
[15:15:24] <Kakadu> ermine: и парсить С++ я не буду, это уже как-то делает qtjambi-generator
[15:16:34] <ermine> а он умеет вложенные темплейти типов без пробелов между >>? :)
[15:17:14] <Kakadu> он умеет парсить Qt и я больше ничего не хочу знать
[15:17:41] <ermine> Kakadu: вообще для glr бери всё, что токенизируется без контекста и только
[15:18:29] <ermine> типа как камлевый Genlex
[15:19:01] <Kakadu> мне пока твои слова ни о чем не говорят
[15:19:08] ermine еще заодно думает, что из-за этого и camlp4 сосет
[15:19:12] <Kakadu> у нас уже есть какой-то glr
[15:19:32] <Kakadu> и формат грамматики вообще без фа-диеза, втупую
[15:19:38] <Kakadu> там даже метаправила есть
[15:19:45] <Kakadu> типа парвила от правил
[15:19:52] <Kakadu> ну ты поняла
[15:19:53] <Kakadu> )
[15:21:14] <ermine> Kakadu: выражение 1+2 легко токенизируется на числа и знаки операции, поскольку токенизатору не надо смотреть на контекст инпута и решать, какой тут токен будет, он просто берет 1 и видит, что это однозначно число, что + - однозначно оператор
[15:21:32] <Kakadu> аааа
[15:21:33] <ermine> это true CFG
[15:21:55] <Kakadu> понял, а вот A<List<T>> можн попутать с cout << "";
[15:22:21] <Kakadu> ну в другую сторону я имел ввиду
[15:22:50] <ermine> xml - CSG и никаким *LR парсером его не осилить
[15:23:07] <Kakadu> и как ты парсишь?
[15:23:14] <ermine> его осилит PEG, над которым я прямо щас корплю
[15:23:37] <Kakadu> а sql язык хороший?
[15:23:52] <ermine> ну CS обычно парсят руками с рекурсивным спуском
[15:24:10] bobry вышел(а) из комнаты
[15:24:14] <ermine> сам знаешь, какой следующий токен будет тут, у тебя в руках контекст
[15:24:42] Typhon вошёл(а) в комнату
[15:24:43] <ermine> а у PEG весь этот контекст в синтаксис упрятан
[15:27:38] <ermine> а вообще CF, CS и прочая лабуда г-на Хомского - таки лабуда, они не предназначены для парсинга, а для генерации (моделирования) бредового текста
[15:28:29] <ermine> как результат - парсилки вынуждены бороться с неоднозначностью грамматик (когда есть несколько способов в грамматике сгенерить одну и ту же строчку)
[15:28:56] <ermine> peg - типа попытка сделать нормальную парсилку, а не генератор языка
[15:29:00] bobry вошёл(а) в комнату
[15:29:52] <gds> ermine: peg не всё умеет парсить, это не пугает?
[15:46:03] <ermine> gds: например?
[15:46:39] <gds> из википидоты: " S ← 'x' S 'x' | 'x' "
[15:48:20] <gds> а чем мне нравится glr -- тупой, потоковый, клёвый для инкрементального парсинга, даёт сразу альтернативы того, что смог распарсить.  хорош для итератов, например.  (разве что какую-то мелочь там надо "потвикать", где-то были примеры.)
[15:48:23] <ermine> ну тут все поглотит в первой ветке, а в glr подобную проблему с if then else решают тоже финтом ухом - длиной матчинга
[15:50:19] <Kakadu> кстати, для камла glr движок есть?
[15:50:33] <Kakadu> А то научник всё говорит, что для фадиеза нету и надо написать рабочий
[15:51:19] <ermine> должен быть, это боттом-ап парсер с редукцией токенов справа налево, вроде бы несложная техника
[15:52:03] <ermine> на педии есть список движков
[15:54:22] <ermine> gds: если парсер взвисает на xSx, то скорее всего инпут никакого интереса не имеет
[15:54:57] <ermine> gds: у нас тут задача не сгенерить как можно более длинную xxxx, а разобрать входные данные!
[15:55:45] <ermine> и кстати, такой парсер даже память может и не выжрать - накапливать синтаксичные токены незачем
[15:56:18] <ermine> выжрет только проц на скоростном тесте инпута
[15:58:03] <Kakadu> такой это пег?
[15:59:01] <Kakadu> кстати, мне тут рассказывали во что раскрывается всё в фадиезе
[15:59:12] <Kakadu> type _ = A|B это енум
[15:59:59] <Kakadu> type x = A | B of int
это класс х, у которого два подкласса А и Б и у Б есть поле типа int
[16:00:16] <Kakadu> кошмарики
[16:02:04] <ermine> это влияние .net?
[16:03:26] <Kakadu> ermine: угу
[16:04:26] <Kakadu> ermine: ты знаешь что такое двууровневая грамматика?
[16:05:33] <gds> да нормально закодировали тип, чо.  я бы так же сделал.
[16:13:06] <Kakadu> gds: за сколько по твоему мнению реально написать рабочий glr движок?
[16:13:27] <gds> Kakadu: мне надо перечитать про glr, сообщу в пределах получаса, если не отвлекут.
[16:13:30] <Kakadu> хотя вопрос наверное некорректный
[16:13:38] <gds> вроде корректный.
[16:13:42] <gds> только субъективный.
[16:13:56] <gds> сообщи, есть ли "доступная в виде структур данных грамматика парсера".
[16:15:18] <Kakadu> в смысле есть ли уже готовая структура данных с грамматикой, которую надо glrить?
[16:15:53] <gds> именно так.  как тупой пример -- type grammar = { tokens : ... ; rules : ... }, ну я образно очень.
[16:17:33] <f[x]> выписывать compare для структуры у которой одно опле нужно сравнивать особым образом - это ужс
[16:18:15] <Kakadu> это ооп, детка
[16:19:51] <Kakadu> gds: http://code.google.com/p/recursive-ascent/source/browse/YaccConstructor/Common/IL.fs
[16:21:26] <f[x]> правда можно хакнуть -> поместить ленивые поля в конец структуры и ловить invalid_argument от pervasives.compare
[16:23:01] <Kakadu> f[x]: это ты в контексте обсуждения, или крик того чем ты локально занимаешься?
[16:23:10] <f[x]> второе
[16:23:20] <Kakadu> ок
[16:24:33] <gds> f[x]: сразу сравнивал бы через кадастр, там вполне задаются сравнения, причём явным образом.  (например, для вариантных типов при разрушении варианта можно указать, "в случае compare -- разрушать до такого-то списка значений, в случае show -- эти поля брать, эти не брать".)  кроме того, код для разрушения конкретного типа пишется только один раз.  вот пример: http://paste.in.ua/3422/
[16:24:45] <f[x]> мне нужна СКОРАСТЬ
[16:24:58] <gds> тогда тебе предстаит СЕКС
[16:25:07] <gds> *ПРИДСТАИТ
[16:25:10] <f[x]> там эти lazy добавил для мемоизации
[16:28:09] <gds> можешь использовать weak-структуры для мемоизации.
[16:30:11] <f[x]> это gc не убивает?
[16:30:53] <gds> не измерял.  вроде не сильно, по слухам.
[16:31:48] <f[x]> хотя непонятно как, надо почитать
[16:39:18] <f[x]> gds: а чего у тебя операции диспатчятся по строкам, а не по открытым вариантам?
[16:44:57] <gds> из-за того, что "инфа о типе" может использоваться всеми, а не только теми, кто прописан в типе, содержащем все [= `Cmp | `Eq | `Hash | `Show | `To_json | `From_json | ... ].  расширяемость, опять же.  меньше гемора с выдачей названия операции в случае ошибок (например, "structural %s failed on simple type %s" op_name type_name).  ещё почему не варианты -- отсутствие предупреждений компилятора типа "вы заматчили `Cmp, но тип будет расширяться, и матчем "_" вы не заметите этого", а предупреждения компилятора я уважаю наравне с ошибками.
альтернативой полиморфным вариантам были бы исключения, но выигрыш был бы невелик, если бы и был вообще.  разве что исключения чуть хуже строк в плане сериализации, а это могло быть полезным.
[16:46:51] <f[x]> по-моему с вариантами тоже расширяемость должна получаться
[16:47:10] <f[x]> консёрнинг pp - валидный поинт
[16:47:42] <gds> f[x]: "консёрнинг pp - валидный поинт" -- недопонял.
[16:48:14] <gds> с вариантами -- надо будет в типе, хранящем все операции, прописывать полный закрытый тип -- всё, что там может храниться.  Если туплю -- расскажи.
[16:49:13] <f[x]> concerning pretty-printing - valid point
[16:50:05] <f[x]> а разве нельзя его полиморфным оставить по этому расширению?
[16:52:12] <gds> вроде нет.
# module Q = struct let q : ([> `Cmp | `Show], unit) Hashtbl.t = Hashtbl.create 1 end;;
module Q : sig val q : (_[> `Cmp | `Show ], unit) Hashtbl.t end
#
[16:54:07] <f[x]> # Hashtbl.add Q.q `XXX ();;
- : unit = ()
# Q.q;;
- : (_[> `Cmp | `Show | `XXX ], unit) ExtLib.Hashtbl.t = <abstr>
[16:54:28] <f[x]> правда _ меня смущает
[16:54:34] <f[x]> т.е. он когда должен закрыться
[16:54:38] <f[x]> * когда-то
[16:55:03] <gds> вот именно!
[17:10:48] <ermine> Kakadu: про двухуровненную слышала краем уха, но не знакомилась предметно еще
[18:07:55] <gds> на всякий случай повторю вопрос, вдруг кто что скажет.  а то снова нужда возникла, и хочется сразу правильно сделать.  http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/11/29.html#11:01:34.79468
[18:09:26] <gds> а про nih -- лично я в последние дни не могу "собраться в кучку".  кое-какие дела вяло делаю, сплю по 12 часов, туплю.  хреново это.
[18:19:39] <f[x]> gds: а там типа два списка, один это развернутый хвост другого?
[18:28:44] <ermine> queue-like?
[18:29:13] <ermine> чота в cwn нет новостей
[18:32:58] <Typhon> gds: могу из дома окасаки посмотреть, там такое было %)
[18:33:15] Kakadu вышел(а) из комнаты
[18:34:02] <gds> f[x]: как вариант -- да, на случай чисто cons+snoc.  но ещё важен и случай склейки кучи списков -- например, сто списков по сто элементов.
[18:34:22] <ermine> а еще у прыща в списке софта есть исходники из окасаки
[18:34:23] <gds> Typhon: если не будет лень, и если помнишь, как оно называлось -- было бы круто.  Накодил бы, это точно.
[18:34:35] <gds> а, ну или у прыща взял бы.
[18:35:12] <ermine> ну сходи на http://ocaml.info
[18:35:48] <ermine> потом расскажешь
[18:36:26] <gds> ermine: сейчас даже расскажу.  нашёл только http://www.ocaml.info/ocaml_sources/okasaki-sol/chp2_sol.ml , этого мало и, вроде, это не то.
[18:37:42] <ermine> вроде не то, надо пюре_фунц
[18:49:07] <gds> нашлось http://hg.ocaml.info/release/pure-fun/file/tip/
[18:51:33] <ermine> оно?
[19:13:30] Kakadu вошёл(а) в комнату
[19:38:16] komar вошёл(а) в комнату
[19:42:34] <gds> вот блин, они в рассылке не только про коммунити, но и про пакеты говорят.  точно читают!
[19:43:00] <Kakadu> может сделаем перевод?
[19:44:14] <gds> может напишем код?
[19:44:18] <Kakadu> может
[19:44:22] <gds> нужет
[19:45:06] <Kakadu> если честно, я хз чего они обозлились на гитхаб
[19:47:02] <gds> а там они пишут, чего.
[19:47:11] <Kakadu> на пишут херню то
[19:47:13] <Kakadu> но*
[19:50:12] <gds> гитхаб -- просто вебморда к гиту.  это -- тупо инструмент для решения проблем.  тем не менее, никто не пишет, какие точно проблемы и как именно они собираются решать гитхабом.  то есть, типичный buzzword.
[19:51:48] <f[x]> во во
[19:51:51] <f[x]> код пишите
[19:52:11] <Kakadu> мне лично непонятно как доджен выглядеть конфиг
[19:52:19] <f[x]> какой конфиг?
[19:52:21] f[x] смотрит на lablqt
[19:52:25] <Kakadu> них.Конфиг
[19:52:59] <gds> Kakadu: опять же, конфиг -- это только текстовый файл, в котором описаны требования пакета / к пакету, и эти требования следуют напрямую из _концепций_.  С которыми у нас чуть-чуть бида.
[19:53:33] <f[x]> а чгео сразу nih, типа мало другого кода
[19:54:06] <f[x]> вообще тред в рассылке годный, у меня тоже есть патчи в полстроки которые годами лежат в мантисе
[19:56:10] <gds> так отпишись по поводу этого, чо.  приведи ссылки на несколько, например.
[19:56:49] ftrvxmtrx вышел(а) из комнаты
[20:00:39] <f[x]> надо бы
[20:17:21] <ermine> f[x]: ты не в курсе как без camlp4fullib.cma заюзать print_implem?
[20:17:38] <ermine> просто этой либлы нет в META
[20:26:29] <f[x]> одно из camlp4.lib camlp4.extend camlp4.quotations camlp4.grammar
[20:26:53] <f[x]> ermine: плюс у камлобилда есть таг use_camlp4_full
[20:33:06] <ermine> этот тэг не добавляет -package в камлофинд
[20:33:41] <ermine> в общем, тоже слабое утешение, ибо camlp4fulllib тоже мало, там понадобится лазить в один каталог, также отсутствующий в мете
[20:34:24] <ermine> придется пошарить гденить или придумать как генерить код
[20:35:31] Typhon вышел(а) из комнаты
[20:43:55] <ermine> видимо проще всего - без camlp4, как бы вручную
[20:51:34] <ermine> f[x]: вроде у тебя sqlgg генерил код вручную?
[21:05:48] <ermine> хм, без оазиса и прочих свистулек компилится
[21:44:14] <Kakadu> ermine: а что за text хочет erm_xml?
[21:45:42] <Kakadu> и да, какой надо environment поставить, чтобы findlib думал, что камло только что установленное?
[22:01:18] <ermine> Kakadu: его хочет только флаг tests вроде
[22:01:21] <ermine> Kakadu: ocaml-text
[22:01:53] <ermine> Kakadu: а играть с erm_xml еще рано, я еще не сгенерила ему грамматику, там рукопись
[22:02:07] <Kakadu> я сбираюсь его только собирать
[22:03:29] ermine наладила себе разгонку писания кода под camlp4 и думает, не пойти ли на горизонтальную
[22:04:10] <ermine> интересно правда как бы в сфьдз4 генерить let rec ... and ...
[22:08:16] <ermine> а, в принципе понятно, более заумным способом
[22:12:10] <ermine> ладно, на горизонтальную
[22:12:17] ermine вышел(а) из комнаты
[22:32:58] shaggie вышел(а) из комнаты
[23:09:22] <Kakadu> мы серьёзно решили в нихе зависеть от extlib?
[23:11:07] <gds> какая разница, если это детали имплементации, а концепций ещё нет?
[23:11:33] <Kakadu> по-моему пора начать писать код
[23:20:26] <gds> первый сказал -- первый и начинай бебебе
[23:30:20] <bobry> ого какие волнения в ml
[23:48:25] <Kakadu> bobry: ты помнишь свой гист, где ты парсил _oasis файлы?
[23:49:58] <Kakadu> боюсь я его посеял
[23:50:57] <bobry> Kakadu: ага, вот он https://gist.github.com/1316541
[23:53:07] <Kakadu> bobry: тебе не лень его пофиксить?)
[23:53:41] <Kakadu> _oasis из core не разбирается....
[23:53:43] <bobry> не лень, на тему?
[23:53:50] <bobry> аа -- щас попробую
[23:55:59] <bobry> Kakadu: это из за того что они используют патченый oasis
[23:56:17] <bobry> если ты сам попробуешь oasis setup -- у тебя тоже ничего не выйдет :)
[23:57:08] <Kakadu> мля
[23:57:26] <bobry> ага
[23:57:56] <Kakadu> а они патчи выложили?
[23:58:15] <Kakadu> короче кора пока лесом
[23:58:19] <Kakadu> секслиба есть
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!