Home
Objective Caml
ocaml@conference.jabber.ru
Воскресенье, 26 февраля 2012< ^ >
f[x] установил(а) тему: 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:23:28] <ermine> в спеке yaml оказывается надо парсить комменты, типа /* End of file */, /* Start of line */
[00:23:36] <ermine> вот ужос-то
[00:23:44] <bobry> pfft
[00:23:49] <bobry> гребаные сишники везде пролезут
[00:27:00] ermine со своей женской логикой не смущается этими вопросами...
[00:30:15] <ermine> вообще весь день пишу хаки к этому парсеру и смеюсь - хаки писать намного легче чем как надо в теории
[00:51:24] ermine опять обливается горючими слезами:
A = a? b*
C = A*
надо, чтобы C не зацикливался

[00:51:49] <ermine> Kakadu: что делать?!
[00:52:29] <Kakadu> попробуй навернуть преобразование, если тебя экшн-код (или что там у тебя) тебя не подкосит
[00:53:29] <ermine> Kakadu: а чей интеллект должен работать и что улавливать?
[00:53:46] <Kakadu> ой
[00:53:50] <Kakadu> забудб
[00:54:11] <Kakadu> у меня есть гипотеза
[00:54:19] <Kakadu> такое рекурсивным спуском не разобрать
[00:54:19] <ermine> тут фокус в том, что A сегда сукселится
[00:54:41] <ermine> поэтому надо вставить костыль, что C должен получить непустой результат
[00:55:55] <ermine> щас у меня парсер соответственно зацикливается, еле нашла почему
[00:56:54] <ermine> придется писать еще один процент AI генератора
[00:57:15] <Kakadu> я последние дни никакой. ничем помоччь не могу
[01:01:57] dzhon вышел(а) из комнаты
[01:10:05] <ermine> empty * и nonempty *
[01:10:27] <ermine> драть розгами ямлописателей
[01:52:54] bobry вышел(а) из комнаты
[02:22:41] Kakadu вышел(а) из комнаты
[02:32:38] <ermine> решила ту задачку добавив пару строчек кода
[02:32:42] <ermine> смешно
[02:51:20] ermine вышел(а) из комнаты
[03:46:56] komar вышел(а) из комнаты: Replaced by new connection
[03:46:56] komar вошёл(а) в комнату
[04:35:28] f[x] вошёл(а) в комнату
[04:57:38] f[x] вышел(а) из комнаты: Computer went to sleep
[05:24:30] letrec вошёл(а) в комнату
[05:24:33] letrec вышел(а) из комнаты
[05:24:49] letrec вошёл(а) в комнату
[05:43:34] letrec вышел(а) из комнаты
[05:52:21] leterec вошёл(а) в комнату
[09:08:54] <gds> вопрос есть.  Вот, ошибки в виде failwith "error: %S" str -- это хорошо, даже очень.  Но этот %S совершенно не знает utf8 и, в результате, не щадит его.  А сообщения об ошибках, содержащих не-latin1 набор символов, видеть таки хочется без декодирования.
Как бы попроще решить, в том числе учитывая камлоспецифику и printf-подобные форматы?
[09:12:17] <gds> (кажется, нащупал решение, но пока не буду делиться, чтобы не сбивать с толку тех, кто захочет подумать над вопросом.)
[09:15:47] <komar> > не щадит его
[09:15:48] <komar> Че?
[09:18:50] <gds> # Printf.printf "%S" "ква";;
"\208\186\208\178\208\176"- : unit = ()
[09:19:18] <gds> я такую х-ню читать не подписывался, если чо.
[09:24:16] <komar> Ух ты.
[09:24:33] <komar> Говно, да.
[09:24:39] <gds> latin1 рулит, знаю.
[09:24:44] <komar> Как-то не замечал раньше.
[09:25:42] <komar> Вот не судьба им была просто реплейс кавычек сделать?
[09:26:37] <komar> Понапридумают херни. Юникод тем и крут, что на него можно забить и обрабатывать как обычный latin1. Нет, будем эскейпить, будем обрабатывать посимвольно, будем вводить кодировки в строках... Чего там еще из популярных решений есть?
[09:28:25] <gds> там у них была единая latin1 и нужда эскейпить всё, что в неё не попадает, так, чтобы результат был в latin1, а валидные символы оставались на месте.
[11:39:43] <gds> ан нет, проверил, оно latin1 из верхней половины ascii8 таки тоже эскейпит.
ну да фигня, запилю свою эскейпилку для utf8.
ещё обидно, что Printexc.to_string использует стандартную.  Но исключений у меня мало, можно и руками обработать этот момент.
[11:47:48] bobry вошёл(а) в комнату
[11:49:53] ermine вошёл(а) в комнату
[12:09:33] komar вышел(а) из комнаты
[12:10:28] <ermine> gds: камло в отношении уникоды сильно отстает от всех остальных языков, erlang например уже включился в мир уникоды, его тулзы уже не эскейпят два года как минимум
[12:10:39] <ermine> gds: написал бы в мейллист
[12:11:03] <ermine> и родить новый флеймъ
[12:12:11] <gds> и получить ответ типа "используй camomile"?  бессмысленно.  особенно когда что-то подобное и сделаю.
[12:22:15] <ermine> gds: а как оно поможет в failwith %S?
[12:24:51] Kakadu вошёл(а) в комнату
[12:25:24] komar вошёл(а) в комнату
[12:36:02] dzhon вошёл(а) в комнату
[13:15:40] <bobry> я за срачик в ml! давай, gds!
[13:15:48] <bobry> давайте все еще раз убедимся что наш топик не врет
[13:18:38] dzhon вышел(а) из комнаты: Replaced by new connection
[13:18:38] dzhon вошёл(а) в комнату
[13:32:56] <gds> ermine: наверное там есть эскейпинг юникода, либо легко реализовать.  так и поможет.
[13:33:16] <gds> bobry: нет смысла в срачике, а топик писали самые честные и достойные люди, он врать не может!
[13:35:59] dzhon вышел(а) из комнаты
[13:37:01] <ermine> нужен не camomile, а ocaml-text, который легко видит текущую локаль и автоматически выводит текст из уникоды в правильном енкодинге
[13:37:45] <ermine> я использовала ocaml-text в своей утилите, которая слала смски с компа на телефон, в телефоне, как известно, usc2
[13:38:16] dzhon вошёл(а) в комнату
[13:48:06] <gds> ermine: про ocaml-text не знаю, так как цель -- всего лишь отэскейпить строку.
[13:50:15] <ermine> gds: там по идеологии было очень похоже на мой проект conversation, поэтому я на ocaml-text леко перешла даже без изменения интерфейса
[14:00:22] <gds> ermine: ну у меня идеологии нет, поэтому буду как-то так, ручками.
[14:17:03] <ermine> кстати, у lwt есть lwt-text, мне аффтар lwt писал, что хочет выкинуть его и заменить на term/lambda
[14:17:08] <ermine> также про lwt-top
[14:17:20] <ermine> я постеснялась спросить что такое term/lambda
[14:17:28] <ermine> и как это будет выглядеть
[14:23:00] <ermine> таак, в парсере yaml надо приступать к извлечению осмысленной продукции
[14:23:09] <ermine> автоматического извлечения
[14:51:51] dzhon вышел(а) из комнаты: Replaced by new connection
[14:51:51] dzhon вошёл(а) в комнату
[14:56:44] <gds> рожаю тут мелкую добавочку к стандартному Buffer, http://paste.in.ua/3917/ , может кому-то понадобится.
[15:00:34] <gds> точнее, не copy on write должно называться, а copy on modify.
[15:02:22] <komar> Зойчем это?
[15:05:40] <ermine> komar: может, им делать больше нечего :)
[15:09:04] <gds> есть строка, которую обрабатываю (escaping какой, например).  с большой вероятностью она останется неизменной при обработке.  цель -- не пересоздавать строку, если она реально не меняется.  но обращаться с ней с помощью функций add_string/substring/char.  в случае, пока не изменилась -- просто сравнивать новое содержимое со старым.  в остальных случаях -- создавать честный Buffer.
[15:12:34] <komar> Годно.
[15:13:46] <komar> Только можно ногу себе прострелить.
[15:14:19] <ermine> оппозиция не нужна
[15:14:47] <ermine> на садовом было всего 11 тыс человек, как раз более чем в 10 раз меньше чем в лужниках
[15:15:01] <ermine> ой не туда
[15:16:11] <gds> да, даже джва раза -- 1. алгоритмы с индексами -- ад, как всегда.  2. если строки мудабельные и на это рощот.  Но я выпилил мутабельность из того String, который доступен в большинстве моего кода, поэтому покатит.
А вообще толчком послужило то, что стандартный String.escaped обещает возвращать оригинальную строку, если нечего эскейпить.  Думаю так же сделал.
[15:16:45] <komar> ermine: сколько за одного садового дают лужницких?
[15:44:27] <gds> .ля, оно ещё и работает.  250 строк адской императивщины.  давно так не удивлялся.
[15:45:05] <gds> ну и пушнуть надо кадастр, "remote: added 38 changesets with 71 changes to 26 files"
[15:45:59] <gds> и вот такое получилось для эскейпинга utf8: https://bitbucket.org/gds/cadastr/src/tip/src/cd_Strings.ml#cl-633 , хотя тривиально.
[15:55:19] <gds> а насчёт исключений подумалось, что в случае стандартных, наподобие Failure of string, можно и свой exception printer налепить.  больше никакие стандартные исключения не могут содержать не-ascii, вроде бы.
[16:20:31] komar вышел(а) из комнаты
[16:21:12] komar вошёл(а) в комнату
[16:27:04] dzhon вышел(а) из комнаты: Replaced by new connection
[16:27:04] dzhon вошёл(а) в комнату
[16:36:43] komar вышел(а) из комнаты: Replaced by new connection
[16:36:44] komar вошёл(а) в комнату
[16:43:17] dzhon вышел(а) из комнаты
[17:22:46] Kakadu вышел(а) из комнаты
[17:31:04] Kakadu вошёл(а) в комнату
[17:56:44] komar вышел(а) из комнаты: Replaced by new connection
[17:56:45] komar вошёл(а) в комнату
[19:47:29] komar вышел(а) из комнаты
[19:47:32] komar вошёл(а) в комнату
[20:44:36] leterec вышел(а) из комнаты
[20:48:54] komar вышел(а) из комнаты: Replaced by new connection
[20:48:54] komar вошёл(а) в комнату
[21:28:56] komar вышел(а) из комнаты
[21:29:46] komar вошёл(а) в комнату
[21:35:03] komar вышел(а) из комнаты: Replaced by new connection
[21:35:04] komar вошёл(а) в комнату
[22:21:53] komar вышел(а) из комнаты
[22:22:25] komar вошёл(а) в комнату
[23:17:11] komar вышел(а) из комнаты: Logged out
[23:17:17] komar вошёл(а) в комнату
[23:43:40] ermine вышел(а) из комнаты
[23:57:43] <bobry> делаю вот домашку по ФП, препод клялся что не читал SICP, а во второй домашке опять одна задачка оттуда
[23:57:48] <bobry> магия :)
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!