Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 20 декабря 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
[01:14:50] Kakadu вышел(а) из комнаты
[01:54:06] dzhon вышел(а) из комнаты
[02:39:39] Andrey Popp вышел(а) из комнаты
[02:47:27] shaggie вышел(а) из комнаты
[03:08:40] <bobry> gds: почему сложнее? парсеров для uri пруд пруди, нужно только портировать какой нибудь на камл
[03:11:10] <komar> http://projects.camlcity.org/projects/dl/ocamlnet-3.4.1/doc/html-main/Neturl_tut.html
[03:11:16] <komar> Не?
[03:18:09] <bobry> а в ml / #ocaml решили не анонсить?
[03:18:17] <bobry> вроде бы тестирование барбаре бы не помешало
[03:18:36] <bobry> komar: да, но ocamlnet тащит ой как не хочется
[03:18:42] <bobry> можно просто дернуть оттуда код :)
[03:18:58] <komar> Какая тебе разница? В микроконтроллер прошивку загоняешь, что ли?
[03:19:24] <komar> Чят не читай @ сразу отвечай
[03:20:22] <bobry> мм, разница есть -- мы же делаем штуку для установки пакетов как раз потому что их неудобно ставить
[03:20:38] <bobry> к тому же gds что-то говорил про боль с ocamlnet на виндах
[03:24:26] <bobry> gds: а зачем разделили build на build-deps / rebuild-deps?
[03:24:59] <komar> Вот неосиляторы.
[03:25:16] <bobry> komar: what is your problem?
[03:42:45] komar вышел(а) из комнаты
[04:00:11] <gds> bobry: пришол.  сейчас поясню всё.
[04:00:27] <gds> и каменты в гуглодоках.  только трубку забью.
[04:02:08] ftrvxmtrx вышел(а) из комнаты
[04:07:43] <gds> bobry: парсеры урл -- да, есть.  я даже показывал свой, сделанный тупым копипастом в .mll и заменой конструкций на лексеровские.  но это -- усложнение логики.  тем более, разные механизмы.  тем более, урл парсить -- одно дело, а догадываться о всех разных сетевых путях -- другое дело.  лично мне не очень нравится эта идея, но о вкусах не спорят.  хочется уметь указывать всё, что было раньше -- local-tar, remote-tar-gz, но чтобы автодогадки были только в случае, когда не указано.
[04:10:08] <gds> чтобы анонсить где-либо -- нужна нормальная документация.  чтобы анонсить в том числе в нерусскоязычных сообществах, нужна нормальная английская документация.  иначе -- "ай донт андерстэнд зис факинщит".  если готов переводить -- давай.  если нет -- лично у меня нет желания, потому что 1.1 скоро будет, который всяко дружелюбнее будет, а потестить и 1.0 сумеем локально.
[04:10:57] <gds> про ocamlnet -- точно не хочется тащить.  мне очень нравятся текущие требования барбры -- ocaml + findlib.
[04:12:10] <gds> build не делили на *-deps.  build билдит и зависимости, и проект.  а вот *-deps -- только зависимости.  у меня на текущей практике это было нужно, вот и решил сделать.
[04:24:57] <gds> > сделанный тупым копипастом *rfc в .mll
[04:59:32] f[x] вышел(а) из комнаты
[05:28:25] letrec вошёл(а) в комнату
[05:40:08] <gds> дааа.  смотрю в мантис в "последние изменённые", а там сплошной движняк и всякие иностранные сенькью.  нихрена ж себе!
[05:59:08] <gds> ещё из впечатлений: решил сделать тупой парсер на ocamllex, думал, что сильно проще итератов будет.  ан нет, для более-менее нормального парсинга (даже LL(1), хоть и с регекспами) приходится использовать ровно те же приёмы.  однако, уже осталось мало, поэтому докодю на лексере, но забавно вышло.
[07:57:32] letrec вышел(а) из комнаты
[08:09:32] bobry вышел(а) из комнаты
[08:10:09] bobry вошёл(а) в комнату
[10:36:30] Andrey Popp вошёл(а) в комнату
[11:12:56] gds вышел(а) из комнаты
[11:31:33] ermine вошёл(а) в комнату
[11:41:18] ftrvxmtrx вошёл(а) в комнату
[11:47:28] Andrey Popp вышел(а) из комнаты
[11:52:35] komar вошёл(а) в комнату
[12:18:44] klapaucius вошёл(а) в комнату
[12:28:49] Kakadu вошёл(а) в комнату
[12:42:46] <Kakadu> эта цигвина доставляет: http://paste.in.ua/3517/#l-5
[12:42:47] klapaucius вышел(а) из комнаты
[12:43:35] <f[x]> wut?
[12:44:06] <Kakadu> http://caml.inria.fr/mantis/view.php?id=5413
[12:44:25] <Kakadu> поставил называется камло не из исходников
[12:45:12] dzhon вошёл(а) в комнату
[13:13:47] <f[x]> Kakadu: http://caml.inria.fr/mantis/view.php?id=5413#c6400
[13:14:56] <Kakadu> f[x]: угу, увидел
[13:24:01] letrec вошёл(а) в комнату
[13:24:13] letrec вышел(а) из комнаты
[13:24:17] Andrey Popp вошёл(а) в комнату
[13:24:28] letrec вошёл(а) в комнату
[13:32:10] <Kakadu> вот тако вот. Хрен соберешь теперь барбариску на венде
[13:44:57] Typhon вышел(а) из комнаты
[13:45:27] dzhon вышел(а) из комнаты: Replaced by new connection
[13:45:28] dzhon вошёл(а) в комнату
[14:16:22] <bobry> Kakadu: а что такое?
[14:35:58] <Kakadu> bobry: PR выше
[14:42:11] Typhon вошёл(а) в комнату
[14:48:36] komar вышел(а) из комнаты
[15:13:00] komar вошёл(а) в комнату
[15:20:28] dzhon вышел(а) из комнаты: Replaced by new connection
[15:20:28] dzhon вошёл(а) в комнату
[15:23:34] letrec вышел(а) из комнаты
[15:48:45] Kakadu вышел(а) из комнаты
[15:49:30] Kakadu вошёл(а) в комнату
[16:15:39] dzhon вышел(а) из комнаты
[16:15:54] dzhon вошёл(а) в комнату
[16:30:16] dzhon вышел(а) из комнаты
[16:30:44] dzhon вошёл(а) в комнату
[16:38:31] letrec вошёл(а) в комнату
[16:50:37] ad1862 вошёл(а) в комнату
[16:55:24] dzhon вышел(а) из комнаты: Replaced by new connection
[16:55:24] dzhon вошёл(а) в комнату
[17:27:41] <ermine> говорят, монады вкомпилили в камло в транке?
[17:27:46] <ermine> let! например
[17:31:28] <f[x]> брээээшуть
[17:33:20] <ermine> http://caml.inria.fr/cgi-bin/viewvc.cgi/ocaml/trunk/Changes?r1=11894&r2=11893&pathrev=11894
[17:33:52] <f[x]> охтыж
[17:33:57] <f[x]> паника
[17:34:24] <f[x]> по-моему пора переползать на что-нибудь более маргинальное
[17:35:11] <ermine> инферно?
[17:35:32] <Typhon> rust, ats
[17:35:39] <f[x]> sml подходит
[17:36:14] <f[x]> там тру-академики, не то что в этом болоте!
[17:36:40] <ermine> академики - в хаскеле
[17:38:59] <ermine> а вот plan9 надо бы возродить и развивать
[17:47:24] ad1862 вышел(а) из комнаты
[17:56:07] <Kakadu> вроде let! няшно
[17:56:32] <Kakadu> хорошо что что-то делать начали
[17:58:56] <ftrvxmtrx> let!!!!!!!
[17:59:32] <f[x]> let!!111
[17:59:55] <ermine> Kakadu: там можно let$%#
[18:00:14] <ftrvxmtrx> жаль нельзя 1 и ONE
[18:00:30] <Kakadu> кто читал thedeemona про оптимизирующие парсер-комбинаторы. Мне тут говорят, что из комбинаторов не сделать fsm без потери функциональности
[18:01:45] <ermine> Kakadu: ну у того чувака в конце написано про массивы
[18:02:12] <Kakadu> ммм
[18:02:13] <Kakadu> ?
[18:02:17] <ermine> а fsm всегда можно, только надо определиться с nfa и dfa
[18:02:21] <Kakadu> я нашел только это в обсуждении
[18:03:24] <ermine> Kakadu: про массивы? значит это было в статье на fprog.ru два года назад
[18:03:53] <Kakadu> ну у демона действительно там автомат из массивов
[18:05:11] <ermine> Kakadu: просто автоматы не контекстно-зависимые, а комбинаторам пофигу какая грамматика, точнее у комбинаторов никакой грамматики, а одна блажь
[18:06:17] <Kakadu> у комбинаторов всё плохо изза откатов, не?
[18:06:49] <ermine> еще раз надо вспомнить про то, что грамматики предназначены для порождения языков, а не парсинга их
[18:07:11] <ermine> сгенерить строчку и сравнить с образцом
[18:07:20] <Kakadu> отсылка к пегу?
[18:08:25] <ermine> надо бы дочитать книжку грюна про парсинг, второе издание, около 700 страниц
[18:10:12] <ermine> а в году даже 400 дней нет
[18:11:50] ermine колупает свой парсер, который все более приобретает вид комбинаторов, блин
[18:19:57] <Kakadu> короче мне по диплому реально придется внедрить ся в код сборки и выколупывать оттуда инфу о грамматике
[18:22:08] dzhon вышел(а) из комнаты
[18:37:49] Kakadu вышел(а) из комнаты
[18:49:08] <f[x]> # let f z = let!!! x = z in Some (x + 1);;
val f : int option -> int option = <fun>
# f None, f (Some 1);;
- : int option * int option = (None, Some 2)
[19:00:07] <f[x]> # let f l =
    let! x = catch (List.assoc "test") l in
    let! a = fst x in let! b = snd x in
    Some (a+b);;
val f : (string * (int option * int option)) list -> int option = <fun>
[19:02:24] <f[x]> не, пример отстой, так короче
# let f l =
    match catch (List.assoc "test") l with
    | Some (Some a, Some b) -> Some (a + b)
    | _ -> None;;
val f : (string * (int option * int option)) list -> int option = <fun>
[19:11:02] <letrec> здесь http://caml.inria.fr/pub/docs/manual-ocaml/manual038.html сказано The threads library is implemented by time-sharing on a single processor
имеется в виду, что даже в случае нативных потоков они не будут шедулиться на разные CPU? или там какой-то глобальный лок есть?
[19:11:49] <letrec> т.е непонятно почему It will not take advantage of multi-processor machines
[19:12:23] <letrec> или CPU affinity используется?
[19:16:05] <f[x]> runtime lock
[19:16:53] <f[x]> код использующий камлевый рантайм выполняется под этим локом
[19:19:05] gds вошёл(а) в комнату
[19:21:15] Kakadu вошёл(а) в комнату
[19:24:24] <letrec> т.е. вызов любой из функций ocamlrun -p обрамляется захватом лока?
[19:24:52] <Andrey Popp> f[x]: какие причины? GC?
[19:26:10] <f[x]> letrec: ыы??
[19:26:20] <f[x]> нет конечно
[19:26:35] <f[x]> Andrey Popp: да, Gc
[19:27:10] <f[x]> letrec: каждый камлевый поток берёт глобальный лок и перидически его отпускает чтобы дать другим потокам возможность его захватить
[19:27:25] <f[x]> и при чём тут ocamlrun -p?
[19:27:42] <letrec> я так понял это интерфейс рантайма
[19:28:24] <gds> о, let! -- это прикольно.
[19:29:40] <f[x]> letrec: я тебя не понимаю :(
[19:30:25] <letrec> f[x]: для меня рантайм это набор функций
[19:30:47] <letrec> я так понял ocamlrun -p выдаёт их список
[19:30:53] <f[x]> ну вообщем да
[19:31:16] <f[x]> камлевый код по умолчанию использует рантайм
[19:31:32] <f[x]> т.е. он не берёт мутекс когда надо, а отпускает когда не надо
[19:32:28] <letrec> а когда именно берёт? и когда именно отпускает?
[19:32:44] <letrec> таймер или статика?
[19:33:33] <f[x]> см. caml_enter/leave_blocking_section
[19:38:27] f[x] вышел(а) из комнаты
[19:45:18] <letrec> их использование понятно когда мы делаем колбэки из C (сами ручками), непонятно как рантайм их использует для камлового кода
[19:45:31] <letrec> например запустил я несколько  OS threads в камле, их шедулит OS, вопрос - когда рантайм дёргает эти функции?
[19:46:12] ermine подумала и решила выкинуть b = Expr из грамматики
[19:46:15] <letrec> в голову приходит только один вариант - при использовании каких-то примитивов рантайма
[19:46:43] <ermine> Kakadu: ф = Expr - это не декларативно!
[19:47:25] <letrec> f[x]: или всё сложнее?
[19:47:29] <gds> мутекс отпускается либо когда делаем блокирующие вызовы в C, либо по событиям мусорщика.  далее мутекс подхватывается следующим ОС-тредом с камлокодом и выполнение продолжается.
[19:48:19] <ermine> тьюплы рулят, они имеют резиновый тип, а значение правила можно представить в виде тьюпла со значениями всех нетерминалов в конкретном правиле, а в экшне трансформировать тьюпл, тут и полная замена для $1 $2 etc
[19:48:39] <ermine> да и более комбинаторно это
[19:49:41] <letrec> gds: т.е. если мы пишем allocation free code, т.е. шанс поиметь паралелизм? или без мазы?
[19:50:01] <ermine> кстати, о том, что типы в камле не алгебраические: всё время надо писать fun a -> A a, вместо того чтобы подставить A сразу
[19:51:19] <gds> letrec: во-первых, это сложно, во-вторых, надо это как-то гарантировать.  синтаксически/компилятором -- не выйдет.  а как выйдет --  например, запускать таковой параллелизм в сишном коде, который будет отпускать мутекс, а по завершении сишного кода его захватывать снова.
а ещё посмотри на oc4mp.
[19:54:01] <letrec> gds: единственное что находит гугл по oc4mp ocaml это http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/11/20.html :) есть более прямая ссылка?
[19:54:21] <Typhon> oc4mc потому что
[19:54:31] <Typhon> http://www.algo-prog.info/ocmc/web/
[19:54:46] <Typhon> https://groups.google.com/forum/#!msg/fa.caml/Gal_K26YEsQ/MCDXEdT_wWMJ
[20:22:06] <Andrey Popp> живым не выглядит :-(
[20:23:07] <gds> это да.
[20:26:04] <letrec> в общем, судя по обсуждению oc4mc основной showstopper для паралелизма это gc
[20:26:46] <gds> кстати, плюнул я на ocamllex (логика мутная получалась, какая-то раскиданная и с кучей ненужных правил) и начал колбасить несложный парсер на итератах.  код в разы понятнее получается.  казалось бы, мелкий lookahead в один символ, да манатки для сопряжения -- а вон оно как.  потом покажу, как допишу.  litpro, ёмоё, потом всяко покажу.  столько времени уже колбашу его (и всё, что рядом с ним).
а вдобавок к этому понял, как сделать эффективное отслеживание позиций (строка+столбец) в итератах так, чтобы не оборачивать все комбинаторы в "возвращающие позицию" и не оборачивать каждый символ в (символ * location).
[20:26:59] <gds> letrec: это да.
[20:27:17] <letrec> видимо именно он жёстко абьюзит вышеупомянутую пару функций
[20:27:35] dzhon вошёл(а) в комнату
[20:27:36] <gds> нет, дело в том, что он не рассчитан на многопоточное.
[20:28:15] <gds> то есть, алгоритм там такой, что в случае, когда один тред собирает мусор, а другой тред либо выделяет что-то, либо тоже собирает мусор, будет фейл.
[20:28:30] <letrec> Зарроп кстати поутих со своим HLVM - видимо не всё так просто как он думал
[20:28:47] <letrec> Харроп
[20:28:51] <gds> не, вроде он фапает на f# с коммерческими целями.
[20:29:40] <letrec> ну, одно другому не мешает
[20:29:57] <Kakadu> letrec: мешает
[20:30:22] <Kakadu> он зазывал какмлистов пересаживаться на поедлие пидараосв
[20:30:42] <letrec> Kakadu: он заявлял, что это хобби проект
[20:30:56] <letrec> Kakadu: ты про F#?
[20:31:05] <Kakadu> letrec: да
[20:31:53] <letrec> Он конечно тот ещё псих, но его книжка по F# очень даже ничего
[20:32:35] <letrec> без скриншотов вижуал студии хотя бы:)
[20:33:12] ftrvxmtrx вышел(а) из комнаты
[20:44:22] <letrec> читаю https://docs.google.com/document/d/1dxbuu3RP3NCxMI54YFRtnwFUOTrIj-EWmBdwy32a0CI/edit?pli=1
godi - его никто в глаза не видел, поэтому судить о том, насколько он альтернатива, никто не берётся.
[20:44:37] <letrec> никто не видел в смысле никто не использовал?
[20:45:28] Typhon вышел(а) из комнаты
[20:58:40] <gds> никто не особо смотрел.  использование тоже вызывало некоторые вопросы, по слухам.
[21:01:54] <letrec> я пользуюсь
[21:02:30] <letrec> под линухом работает нормально, только сишные зависимости надо руками ставить
[21:02:40] <letrec> по виндой не завелось
[21:03:37] <Kakadu> где-то был разговор что годи падвендой сейчас сломан
[21:03:49] <letrec> у меня такое впечатление, что это лучшее, что есть на данный момент по количеству пакетов
[21:04:39] <letrec> я в мэйл лист писал о своих проблемах под виндой и мне было сказано, что проблемы индейцев...
[21:10:43] <gds> про текущее "падвендой" -- ага, было такое, гердушко признавался недавно.
[21:11:28] <gds> однако у нас вполне таки можно и годи-пакеты собирать, просто разные методы сборки.
[21:16:10] <letrec> у нас это в твоём проекте?
[21:16:49] <letrec> или в barbra?
[21:48:40] f[x] вошёл(а) в комнату
[21:56:07] letrec вышел(а) из комнаты
[22:17:11] bobry вышел(а) из комнаты
[22:52:25] ermine вышел(а) из комнаты
[23:03:28] Andrey Popp вышел(а) из комнаты
[23:57:21] bobry вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!