Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 16 сентября 2010< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | ocaml мёртв, move on | Oh My God! They Killed Kamlp4! Bastards!
Конфигурация комнаты
Участники комнаты

GMT+4
[00:04:11] Kakadu вошёл(а) в комнату
[00:21:11] <arhibot> не понимаю, почему такая простая вещь не компилится, говорит, что тут 3яя строчка неправильная, а репл ест:
let rec it_stream f s =
  match s with parser
  [< 'x ; ss >] -> f x; it_stream f ss
    | [<>] -> ();;
[00:52:29] f[x] вышел(а) из комнаты
[00:57:12] komar вошёл(а) в комнату
[00:57:37] <komar> Левая рекурсия.
[00:58:44] <arhibot> komar: это мне?
[00:58:53] <komar> Да.
[00:58:59] <komar> Левосторонняя, чи как её там.
[00:59:11] <arhibot> нет тут ее
[00:59:12] <komar> f x никогда не завершится.
[00:59:29] Kakadu вышел(а) из комнаты
[00:59:57] <komar> А, точно.
[01:00:17] komar забыл синтаксис стримов и пошел убиваться.
[01:03:22] <arhibot> komar: может там влажок волшебныый к ocamlc есть? =)
[01:13:08] <arhibot> скомпилил <_<
[01:13:27] <zert> что сделал?
[01:16:56] <Typhon> (typhon@cuprum ~)>>= ocamlfind ocamlc -package camlp4 -syntax camlp4o -o s.exe s.ml
(typhon@cuprum ~)>>= ./s.exe
42
[01:17:07] <Typhon> всё комплирируется ок
[01:17:27] <Typhon> в s.ml -- let () = it_stream print_string (Stream.of_list ["4"; "2"])
[01:18:19] f[x] вошёл(а) в комнату
[01:18:43] <arhibot> Typhon: уж разобрался
[01:18:47] <arhibot> но спасибо
[01:37:28] arhibot вышел(а) из комнаты
[03:19:12] komar вышел(а) из комнаты: Replaced by new connection
[03:19:13] komar вошёл(а) в комнату
[03:46:20] zert вышел(а) из комнаты
[03:50:01] Typhon вышел(а) из комнаты
[07:39:52] Typhon вошёл(а) в комнату
[08:12:47] iNode вошёл(а) в комнату
[08:13:50] gds вышел(а) из комнаты
[09:02:20] gds вошёл(а) в комнату
[09:20:07] Typhon вышел(а) из комнаты
[10:13:12] arhibot вошёл(а) в комнату
[10:45:29] Typhon вошёл(а) в комнату
[11:09:04] komar вышел(а) из комнаты
[11:58:16] ermine вошёл(а) в комнату
[12:04:25] <gds> http://lex-kravetski.livejournal.com/301063.html
пользователи языков со сборщиками мусора улыбаются и машут, остальные получают баттхёрт, и всем весело.  (несмотря на то, что автор -- неуподоблюсь.)
[12:20:34] Typhon вышел(а) из комнаты: Replaced by new connection
[12:20:34] Typhon вошёл(а) в комнату
[12:23:20] <Typhon> gds: ааа! ржал! знаю такого :-) "архитектора"
[12:39:24] daapp вошёл(а) в комнату
[12:44:31] daapp вышел(а) из комнаты
[12:46:29] komar вошёл(а) в комнату
[12:47:42] arhibot вышел(а) из комнаты
[12:48:05] arhibot вошёл(а) в комнату
[12:50:38] <gds> боян, но http://altadata.ee/
[12:54:51] <f[x]> хы
[12:59:48] <Typhon> там надо шутку "эстонцы" и "High-Frequency" видеть или просто камлистов нанимают? :-)
[13:02:30] <komar> Кастую dmz'а.
[13:09:14] arhibot вышел(а) из комнаты
[13:28:21] komar вышел(а) из комнаты
[13:49:29] arhibot вошёл(а) в комнату
[14:07:12] <arhibot> так. А почему Genlex не хочет выделять токены такого вида: "%word" хотя в keywords есть ["%word"]? выделяет % и word&
[14:07:14] <arhibot> ?
[14:08:09] <f[x]> http://caml.inria.fr/pub/docs/manual-ocaml/libref/Genlex.html
[14:08:19] <f[x]> > It implements roughly the lexical conventions of Caml, but is parameterized by the set of keywords of your language.
[14:08:29] <f[x]> _lexical conventions of Caml_
[14:11:04] <arhibot> f[x]: действительно. спасибо
[14:12:49] <gds> вот поэтому предпочитаю рожать лексеры руками, вот этими вот.
[14:22:15] <arhibot> gds: это у меня следующий пункт в повестке изучения
[14:23:56] <gds> например, можно взять готовый тупой лексер, поменять до требуемого уровня, и всё.
[14:24:35] <gds> однако не настаиваю.  Можно ещё stream'ами разбирать, зачастую даже полезно (особенно если utf8 хочется какое-нибудь).
[14:30:21] <arhibot> gds: а пример готового тупого можно?
[14:30:31] <arhibot> genlex?
[14:32:12] <gds> в мануале http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html по подстроке "File lexer.mll" ищется пример.
[14:33:27] <gds> можно добавить матчинг "%word" для конкретного word, можно добавить общее правило для "%anyword" как-то через '%' (['a'-'z' 'A'-'Z']+ as theword), как-то так.
[14:33:41] <arhibot> а не, ocamllex нельзя
[14:33:54] <arhibot> gds: я лабу делаю <_<
[14:34:31] <arhibot> как раз вторая лаба свой лексер
[14:35:32] <gds> тогда можно изобразить свой лексер на комбинаторах, а в качестве отмазки сказать "чото задумался, а тут и вдохновение нашло".
[14:38:04] <arhibot> преподаватель говорит, что за все время был 1 человек, который пытался сделать на ocaml) после пары лаб забил %_% стало интересно на свою голову)
[14:41:14] <gds> а на какую тему дальнейшие лабы (и весь курс вообще)?
[14:44:05] ʇsʎɯ вошёл(а) в комнату
[14:48:30] <arhibot> gds: конструирование компиляторов. первая лаба просто считать заданную в грамматику и произвести всякого рода модификации, вторая - распознавание цепочек регулярных языков, третья - синтаксический анализатор свой, потом еще что-то. и затем уже использую любые средства написать свой компилятор для полу игрушечного языка в llvm,jvm или .net
[14:49:32] <gds> зачотный курс.  Будет интересно.
[14:49:42] komar вошёл(а) в комнату
[14:51:00] <arhibot> gds: да, интересно. но пока создается ощущение, что на том же питоне или ерланге, у меня бы уже были первые лабы
[14:52:07] <gds> зато есть хороший шанс обогнать на последних лабах.
[14:55:14] <gds> не, ну ырланк ещё более-менее, но не понимаю, как можно в здравом уме писать относительно-сложный компилятор на петоне.  Там же змеи.
[14:59:27] <Typhon> arhibot: после обеда тупнячок, но возможно помочь может: http://ygrek.org.ua/p/code/bencode.ml.html -- парсер на стримах (как пример, типа)
[15:01:05] <ʇsʎɯ> google for "programming languages zoo"
[15:03:11] <Typhon> там ocamllex, ocamlyacc емнип
[15:04:59] <arhibot> спасибо всем
[15:05:02] arhibot вышел(а) из комнаты
[15:09:03] <Typhon> оффтоп, но может быть полезным: http://www.slideshare.net/GlobalGossip/steal-this-presentation-5038209 как делать чоткие презентации
[15:09:36] <ʇsʎɯ> боян
[15:09:42] <ʇsʎɯ> на реддите уже 3 дня лежит
[15:09:47] <ʇsʎɯ> да и не так уж там и чотко
[15:10:47] <ʇsʎɯ> старый лысый пердун-препод у доски с мелом, регулярно показывающий ,.!.. и чертящий при помощи стула - бесценно
[15:11:04] <ʇsʎɯ> а, и круги - тряпкой вместо циркуля
[15:39:14] f[x] пушнул свои фиксы к ocaml-event -> http://repo.or.cz/w/ocaml-event.git
[15:44:07] Typhon вышел(а) из комнаты: Replaced by new connection
[15:44:08] Typhon вошёл(а) в комнату
[15:49:31] sceptik вошёл(а) в комнату
[15:49:39] sceptik вышел(а) из комнаты
[15:54:43] gds вышел(а) из комнаты
[15:56:27] gds вошёл(а) в комнату
[17:24:11] arhibot вошёл(а) в комнату
[17:35:52] ʇsʎɯ вышел(а) из комнаты
[17:35:56] Kakadu вошёл(а) в комнату
[17:36:42] Kakadu вышел(а) из комнаты
[17:37:11] Kakadu вошёл(а) в комнату
[17:37:45] iNode вышел(а) из комнаты
[17:47:47] gds вышел(а) из комнаты
[17:48:32] <Kakadu> arhibot: А что за препод и универ у тебя?
[17:48:47] <arhibot> Kakadu: бауманка, Просуков
[17:49:08] <Kakadu> понятно....
[17:49:25] <Kakadu> Я тут сегодня сидел на спецкурсе по разработке компиляторов
[17:49:39] <Kakadu> было любопытно как писать эффективные лексеры руками
[17:50:21] <Kakadu> читал В.Сафонов по его же книжке (что-то типа Trustworthy Compilers) этого года издания
[17:53:11] <Typhon> Kakadu: и как писать? можешь в жежешечку запостить что-нить? (ну или здесь)
[17:53:52] arhibot вышел(а) из комнаты
[17:54:13] <Kakadu> ну во-первых он сказал по недоброму, что его книжку кто-то выложил в инет
[17:54:25] <Kakadu> я ещё могу попробовать достать слайды
[17:55:05] <Kakadu> всё, что я сегодня понял, что lex жутко тормозит
[17:55:10] <Kakadu> изза регулярок
[17:55:27] <Kakadu> еслди писать руками, то будет эффективнее работать
[17:55:33] <f[x]> странное утверждение
[17:57:25] <f[x]> регулярки это fsm, что тут можно руками кардинально лучше написать?
[17:57:57] <f[x]> т.е. вообще весь лексер это fsm
[17:58:10] <f[x]> как руками надо писать?
[18:00:25] <Kakadu> я не знаю как коротко ответить на \тот вопрос
[18:00:28] <Kakadu> этот*
[18:01:17] <Kakadu> сегодня-завтра его книжечку скачаю, покурю главу и в кратце изложу вам
[18:01:22] <Kakadu> если ркуи дойдут)
[18:01:29] <Kakadu> надо бы ещё диплом себе придумать
[18:01:32] <Kakadu> про камло
[18:03:06] <f[x]> а qt-биндинги уже не?
[18:04:00] <Typhon> в россии в университетах, насколько мне известно, не любят такое :) им подавай ПРОМЫШЛЕННЫЕ СИСТЕМЫ! (которые на деле лажа). а библиотеки полезные или вот биндинги мало кого интересуют :)
[18:04:18] <f[x]> книжка не гуглится
[18:04:20] <Typhon> про регекспы -- http://sebfisch.github.com/haskell-regexp/regexp-play.pdf может что-то типа такого, только там все равно про трансформацию в fsm
[18:05:10] <Kakadu> qt-байндинги я бы с радостью но надо утвердить, с научником тему. А я этого пока не сделал окончательно
[18:05:20] <Kakadu> *там запятая лишняя
[18:05:27] iNode вошёл(а) в комнату
[18:09:47] ʇsʎɯ вошёл(а) в комнату
[18:10:57] gds вошёл(а) в комнату
[18:33:15] gds вышел(а) из комнаты
[18:40:21] <Kakadu> По-моему это она http://www.fileserve.com/file/nWuXzUb/0470500956.pdf
[18:40:29] <Kakadu> но какая-то подозрительно тонкая
[18:40:36] <Kakadu> может хакеры обрезали что-то...
[18:50:07] <Kakadu> `Also, it is very important, for effi ciency reasons, that built - in lexical analysis libraries (like regular expression analysis APIs for Java and C#), if possible, should not be used in lexical analyzers, or used with caution, since those APIs may not be implemented effi ciently enough. For example, they can be based on multiple passes of the source code...`
[19:02:28] <f[x]> ну тут видимо имеются ввиду проблемы конкректно regexp'ов конкретно в жабе
[19:05:20] <Kakadu> `like regualr expressions analysis APIs for Java and C#`
[19:05:43] <Kakadu> на словах он скзал что юниксовый lex не стоит использовать
[19:05:57] <Kakadu> надо конкретно вкурить что такое регулярки
[19:07:19] <f[x]> а что надо?
[19:07:26] <f[x]> что взамен?
[19:10:13] <Kakadu> если надо быстро писать - lex в руки. Если надо, чтобы быстро работало - писать руками. Как именно писать руками? хз. У него в книжке про это 15 страниц есть. Большая часть тривиальные примеры и большой кусок про подбор хэш-функции для идентификаторов и уход от линейного поиска.
[19:10:26] arhibot вошёл(а) в комнату
[19:13:42] zert вошёл(а) в комнату
[19:17:23] <f[x]> если я правильно понимаю то выбор хэш-функции это ортогональный вопрос - всё равно это keyword'ы сначала надо выделить из входного потока
[19:17:29] <f[x]> * эти
[19:18:13] <f[x]> кстати для постороения идеального хэша есть gperf
[19:23:04] <f[x]> кто-нибудь знает как отрезать первую страницу у pdf'ки?
[19:25:21] <f[x]> вообще конечно крутой у вас курс
[19:25:34] <Kakadu> это очень сложный вопрос... у нас на работе работает утилита PDFExtract, но она его кажется разрывает в тест, извлекает картинки и делает много ещё гадостей
[19:25:47] <Kakadu> в текст*
[19:27:13] <Kakadu> хотя может и не PDFExtract
[19:27:54] <Kakadu> pdftotext она называется если быть точным
[19:28:24] <Kakadu> и вообще по хорошему все пдвки должны быть open Source: к ним должен прилагаться теховский файл)
[19:28:39] <Kakadu> И тогда во всем Мире наступит Социализм
[19:28:44] <ʇsʎɯ> а ещё лучше - всё в .tex
[19:28:59] <Kakadu> ну .tex ещё компилить надо
[19:29:10] <Kakadu> повозиться с кодировочкой и пакетиками
[19:29:12] <ʇsʎɯ> ну вьювер сделает
[19:29:51] <Kakadu> я просто вчера компилировал из TeXa книгу Шеня "Программирование: теоремы и задачи"
[19:29:57] <Kakadu> повозился чутка
[19:30:08] <f[x]> а, это evince тупой, xpdf нормально показал
[19:30:21] <f[x]>    As for efficiency, linear search or big sequences of "if" statements to
seek an appropriate alternative of processing a token should be avoided
as much as possible. For example, for processing identifiers, a hashed
table is necessary, rather than a blind linear search of each identifier in
a giant table of all the identifiers already found.
   Similarly, very efficiently organized tables should be used in a lexical
analyzer, hashed or indexed appropriately, to avoid long loops or chains
of checks for an appropriate alternative.
[19:32:44] <f[x]> ну это как бэ очевидно?
[19:34:05] <f[x]>     Now let's compare the lex approach to our algorithms proposed in this
chapter. We should note that the above lexical analyzer from the example will
not process keywords and separate them from identifiers efficiently enough:
According to the above lex rules, the lexical analyzer will, first, try to recognize
begin on the input stream; if it fails, it will try to recognize end, and so on. If
it were a lexical analyzer for Pascal whose standard contains 57 keywords,
using the same approach would be too inefficient. So, as we can summarize,
the advantage of using lex is simple and self-evident specification of tokens;
its shortcoming (if used in a "straightforward" way) is possible inefficiency of
the lexical analyzer generated. So we think lex is good for rapid prototyping
of lexical analyzers.
[19:36:01] <Kakadu> ну то что вы сказали "очевидно" я со своим английским не смог до конца понять. Что там имеется ввиду про if-утверждения?
[19:39:55] <Kakadu> ну а вторая цитата вроде бы звучит логично
[19:40:10] <Kakadu> хотя я первую наконец, тоже осмыслил с помощью lingvo
[19:40:38] <Kakadu> интересно, сколько в камле ключевых слов
[19:40:43] <arhibot> Kakadu: тема курсовика?
[19:40:59] <f[x]> насколько я понимаю lex так не работает, он строит автомат с состояними в котором сгруппированы все варианты переходов
[19:41:01] <Kakadu> arhibot: тема пока не придумана
[19:41:11] <arhibot> Kakadu: выше про биндинги писал
[19:41:33] <Kakadu> arhibot: я имел ввиду что не утверждена окончательно
[19:42:03] <f[x]> а не пробует все варианты по очереди
[19:46:24] <arhibot> а диплом
[19:46:40] <arhibot> Kakadu: слабовато для диплома наверн, не?
[19:48:32] <Kakadu> arhibot: наверное. Я пока особо не задумывался. На идеи о том что это слабовато меня тоже посещали
[19:49:18] <arhibot> Kakadu: специалист или магистр?
[19:49:48] <Kakadu> arhibot: Вообще мне предлагали писать какую-то хрень про code sketching для камла. Я так понял что эта такая штука по автоматической генерации кода на основе требований на более-менее естественном языке
[19:49:55] <Kakadu> arhibot: специалист
[19:50:24] <arhibot> специалисту хоть псевдо-научную-работы придумывать не надо
[19:50:28] <arhibot>
[19:50:45] <komar> Вышка не нужна.
[19:51:15] <Kakadu> komar: вышка нужна чтобы получить диплом, а потом военный билет младшего офицера
[19:51:46] komar военных не любит и в военкомат не ходит.
[19:52:00] <komar> А диплом у меня есть, мне сестра подарила.
[19:52:33] <komar> Продать на ибее, что ли.
[19:53:37] <ermine> если камлевый модуль загрузить через dynlink, то его не увидеть в backtrace?
[19:53:52] ermine плачет
[19:58:18] <ʇsʎɯ> не плачь
[19:58:29] <ʇsʎɯ> его можно увдеть в gdb backtrace
[19:59:27] <ermine> эт его уронить еще надо
[20:05:19] <ermine> в байткоде бэктрейс не выводится, в нативе - иногда
[20:06:29] <ʇsʎɯ> можно присосаться к рабочему
[20:06:37] <ʇsʎɯ> с байткодом да, сложнее
[20:15:10] Kakadu вышел(а) из комнаты
[20:27:14] Typhon вышел(а) из комнаты
[21:43:44] ygrek вошёл(а) в комнату
[21:57:10] iNode вышел(а) из комнаты
[22:06:39] ygrek вышел(а) из комнаты
[22:33:00] Typhon вошёл(а) в комнату
[22:57:32] ʇsʎɯ вышел(а) из комнаты
[23:19:49] komar вышел(а) из комнаты
[23:24:12] Kakadu вошёл(а) в комнату
[23:38:01] Kakadu вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!