Home
Objective Caml
ocaml@conference.jabber.ru
Пятница, 11 ноября 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+3
[00:17:06] Kakadu вышел(а) из комнаты
[00:45:46] Typhon вошёл(а) в комнату
[00:52:45] Typhon вышел(а) из комнаты: Replaced by new connection
[00:52:46] Typhon вошёл(а) в комнату
[02:42:37] bobry вышел(а) из комнаты
[02:42:55] bobry вошёл(а) в комнату
[02:45:44] Typhon вышел(а) из комнаты
[04:43:45] bobry вышел(а) из комнаты
[04:44:23] bobry вошёл(а) в комнату
[06:18:47] bobry вошёл(а) в комнату
[06:19:04] bobry вышел(а) из комнаты
[06:55:38] komar вышел(а) из комнаты
[06:56:36] komar вошёл(а) в комнату
[07:28:29] komar вышел(а) из комнаты
[09:58:50] Typhon вошёл(а) в комнату
[10:02:24] <Typhon> """Ну а как живётся с make без ocamlbuild, мы недавно заслушали."""
[10:02:38] Typhon приложился рукою к лицу
[10:52:40] ermine вошёл(а) в комнату
[11:09:34] bobry вышел(а) из комнаты
[11:15:28] bobry вошёл(а) в комнату
[12:17:17] ermine заценила удобство использования конструкции let open M in там где много полей рекорда из M
[12:18:22] <Typhon> а Module.( … ) как тебе? :-)
[12:21:22] <ermine> ну это будет больше букв
[12:21:38] <ermine> возьмем к примеру tm из модуля Unix
[12:21:46] <ermine> там почти с десяток полей
[12:22:06] <ermine> tm.Unix.tm_hour tm.Unix.tm_min ...
[12:22:16] <ermine> убиться можно
[12:27:18] shaggie вошёл(а) в комнату
[12:28:56] <f[x]> дык да, openin очень годная вещь
[12:32:24] <ermine> не считая того неудоства, что несколько последовательных let open M потихоньку уезжает за правый горизонт
[12:32:50] <ermine> там в конце не сделаешь in и сброс сдвига вправо
[12:33:59] <f[x]> ы?
[12:35:14] <ermine> let open M in
  smth;
  let open B in
    smth
[12:35:23] <f[x]> ну и зачем так делать?
[12:35:35] <ermine> а как?
[12:36:04] <f[x]>       let show_count c =
        open Best in
        open Php_serialize in
        ("xxx", I c.nr_xxx) ::
        ("yyy", I c.nr_yyy) ::
[12:36:34] <f[x]> ты же после топлевел open'ов не индентишь
[12:37:18] <ermine> у тебя тут вся функция
[12:38:31] <ermine> а я хочу в одной функции последовательно разные модули в отдельных блоках поюзать
[12:39:04] <ermine> т.е. надо обвешивать let () = openin ... in let () = openin ..
[12:39:08] <ermine> ых
[12:39:09] <ermine> ладно
[12:40:17] <f[x]> а, если scope ограничить надо, то да
[13:12:00] komar вошёл(а) в комнату
[13:17:01] <gds> ermine: если scope явно ограниченная, бери Module.(...)
[13:57:30] <ermine> ну так или иначе
[13:57:58] ermine делает новые открытия в том, как надо работать с протоколом хмпп, смешно
[13:59:12] <ermine> и это спустя 10 лет после того как познакомилась с жабиром
[14:19:18] shaggie вышел(а) из комнаты
[14:20:00] shaggie вошёл(а) в комнату
[14:46:45] komar вышел(а) из комнаты: Logged out
[14:46:49] komar вошёл(а) в комнату
[15:09:38] komar вышел(а) из комнаты: Replaced by new connection
[15:09:39] komar вошёл(а) в комнату
[15:46:43] ftrvxmtrx вошёл(а) в комнату
[15:48:24] ftrvxmtrx вышел(а) из комнаты
[17:16:00] Typhon вышел(а) из комнаты
[17:17:55] Typhon вошёл(а) в комнату
[17:32:47] ftrvxmtrx вошёл(а) в комнату
[17:53:03] ftrvxmtrx вышел(а) из комнаты
[17:54:26] <f[x]> PR#5396
[17:54:29] <f[x]> ну хоть какая-то польза
[17:58:09] <Typhon> f[x]: а ты все мониторишь тикеты свежие? а то я в какой не зайду, везде есть в мониторящих %)
[17:58:25] <f[x]> не, только интересные
[18:01:54] Kakadu вошёл(а) в комнату
[19:20:29] Typhon вышел(а) из комнаты
[19:31:24] <ermine> никто не пробовал развлекаться писанием кодогенератора на базе XSD?
[19:31:35] ermine открыла еще один бесполезный проект
[19:32:00] <f[x]> вполне годная в вакууме идея
[19:32:57] <ermine> да вот в xmpp много схем, давно хотелось генерить код на их основе
[19:33:16] <ermine> только гимора в этом - ой
[19:33:40] ermine пошла скачивать спеку по xsd
[19:34:37] f[x] делал чекалку плюсового кода на основе xsd
[19:35:19] <f[x]> точнее наоборот - делал генерилку xsd по плюсовому коду с целью валидации xml
[19:35:24] <ermine> но сначала надо поискать в гугле
[19:35:24] <f[x]> йоу, давно это было
[19:35:49] <f[x]> сам xsd достаточно простой, и имхо какую-нибудь генерилку сделать можно
[19:35:58] <f[x]> если не сильно в перфекционизм ударяться
[19:36:03] <f[x]> как здесь в чате люблять
[19:37:21] <ermine> да я в гугле чота не вижу подходящего
[19:38:40] <f[x]> ну чтобы въехать - первая урла в гугле на w3schools, а потом всё равно спеку читать
[19:38:45] <ermine> так что перфекции будем колотить
[19:43:56] <ermine> камло - такой отсталый язык! генератоны есть везде, даже в питоне и руби
[19:49:33] <f[x]> шайбу! шайбу!
[19:52:52] <gds> ermine: иди delimcc юзай!
[19:53:40] <ermine> gds: мне не делить, а генерить надо
[19:54:26] <gds> лол ок
[19:54:37] <ermine> в xmpp 300+ расширений, если считать все активные и отвергнутые и 125 схем
[19:55:02] <ermine> а у меня планы то ли горностайские, то ли наполеоновские
[19:55:47] ermine дернула перо из Kakadu
[19:56:03] <ermine> шоб не прохлаждался со своим lablqt
[20:09:31] shaggie вышел(а) из комнаты
[21:17:22] mrm вошёл(а) в комнату
[21:18:46] <mrm> gds: Привет. Наконец-то добрались руки до overbld. Есть проблема при сборке транка: http://slexy.org/view/s2yWj3j2vi
[21:20:39] <gds> mrm: привет, недавно что-то такое фиксил.  покажи hg ident репки.
[21:21:32] <gds> mrm: ты собираешь транк окамла?
[21:22:44] <mrm> 9fc3d4f2b5c9 tip
[21:22:46] <gds> f[x]: тебе по патчам и по прочей активности не ясно, скоро ли будет следующий релиз окамла?
[21:22:54] <mrm> Просто сделал hg clone отсюда: http://overbld.hg.sourceforge.net:8000/hgroot/overbld/overbld
[21:22:59] <mrm> А потом следовал инструкциям
[21:23:16] <mrm> 2. OVerbld with some high-level compilation management.
[21:23:26] <gds> ага, понял, сейчас.
[21:24:02] <mrm> mingw + прочие бинарники используются те, что идут в комплекте с последним релизом overbld
[21:24:53] <gds> mrm: в общем, беру mingw и начинаю собирать.  считай, что багрепорт принят.
[21:25:06] <gds> hg ident хороший, репка правильная.
[21:25:25] <mrm> gds: Ты не против Mikmatch в overbld?
[21:25:45] <mrm> Сегодня пугал директора регулярками :-)
[21:25:56] <gds> mrm: я _за_ любые библиотеки и вообще ветки камла.
[21:26:01] <mrm> Пример на Делфи с PCRE: http://slexy.org/view/s2p9OI4dxd
[21:26:14] <mrm> Mikmatch: http://slexy.org/view/s2GoGx5bMG
[21:26:49] <mrm> Ахаха. В примере на Делфи есть утечка памяти :-)
[21:26:58] mrm посыпал голову пеплом
[21:27:14] <gds> mrm: или попробуй откатиться до предыдущих версий (расскажу, как это сделать в bld.sh), или подожди где-то до завтра -- у меня мингв под виртуалкой, а там долго.
[21:27:22] <gds> лучше подождать, конечно.
[21:27:51] <gds> с другой стороны, у тебя там какая-то бага, и вот думал начать фиксить её, начиная со стабильного окамла (с релиза какого-нибудь).
[21:30:34] <gds> почему собственно с релиза -- потому что камловский транк распространять нехорошо, а там, по сравнению с предыдущим релизом, кое-что важное пофиксили, как я помню.
[21:31:07] <mrm> gds: С багом пока непонятно как разобраться, т.к. информации доступно почти ноль. Но вот сейчас попробую подключить к делу толкового клиента, у которого это воспроизводится
[21:31:48] <gds> проще подождать релиза, он будет скоро, это безгеморнее в целом.
[21:31:49] <mrm> Кстати, как в байткодовом Окамле сделать нормальные автоматические стектрейсы?
[21:32:00] <mrm> Сейчас я их печатаю вручную при помощи функций из Printexc
[21:32:17] <gds> после релиза в течение нескольких дней будет оверблд с новым камлом.
[21:32:32] <mrm> Установка переменной окружения (как в мануале написано) не помогает :-(
[21:32:52] <gds> вдобавок к переменной надо ещё debug info
[21:33:01] <mrm> Тоже есть
[21:33:11] <mrm> Всё равно получаю лаконичное "Not_found"
[21:33:21] <mrm> Баг уже исправил, но осадок остался
[21:33:25] <gds> минимальный пример есть?
[21:33:57] <mrm> Попробую сделать
[21:34:21] <gds> конкретно с оверблд -- баг понятен, его принял в дело.  про трейс -- никак нет.
[21:35:10] <mrm> Это не в оверблд у меня проблема с трейсам, а везде :-) Очевидно, что не так что-то делаю
[21:36:32] <mrm> Зато Not_found и проч. вынуждают меня избегать опасной императивщины и писать больше тестов :-)
[21:36:34] <gds> конкретно про трейс -- надеюсь, ибо туда мои грязные ручонки не доходили.  Но в чятике помогут разобраться.  Я или не я -- не важно.
[21:36:59] <mrm> Интересно, что мешало разработчикам сделать по отдельному эксепшну на каждую структуру данных?
[21:37:12] <gds> ну дык да, везде, где есть риск Not_found, нужна функция с суффиксом _opt, возвращающая option.
[21:37:13] <mrm> И чтобы этот эксепшн содержал минимальную инфу об ошибке?
[21:37:27] <mrm> Например, на каком ключе хеш-таблицы случилась ошибка
[21:38:06] <mrm> В батерейках такие местами есть, использую
[21:39:00] <gds> разные exceptions -- мешало то, что exceptions хитро типизируются, и ловить пришлось бы всё равно Not_found of someinfo.  А про "на каком ключе" -- это уже runtime type info нужно.  Я-то её пытаюсь сделать, как раз сейчас, но там туплю жестоко, а это мало кому интересно настолько, чтобы помочь.
[21:40:14] <gds> то есть, у меня в кадастре в разные map_* (среди них будет и Hashtbl-отображения) в конструктор передаётся ~ti_key и ?ti_val, на случай, если захочется сдампить что-то оттуда.  ti -- typeinfo, типо.
[21:40:34] <mrm> Not_found (structure_type, string) -- почему так не пойдёт?
[21:40:57] <gds> потому что в string не запихнёшь ключ в общем случае.
[21:41:18] <mrm> Ах да... Нельзя же любой ключ напечатать... :-(
[21:41:45] <gds> потому и явная typeinfo.
[21:42:06] <gds> там ti 'a говорит о том, как делать простые, несложные операции поверх 'a.
[21:42:16] <mrm> Если только на функторах что-то сделать, чтобы пользователь указывал свой printer
[21:43:06] <mrm> Читаю про кадастр
[21:43:31] <gds> тоже вариант.  но мне он не нравится, кроме того, недостаточно общий.
а если вдруг пойдёшь так, то потребуй заодно, чтобы этот функтор давал value hash : t -> int, чтобы как-то общо было.
[21:43:52] <mrm> Не могу найти инфы про кадастр :-) Гугл выдаёт логи этого чатика
[21:43:56] <gds> ща
[21:44:53] <gds> там док мало, вот что не ок.  потому что не знаю, что именно получится, а что нет.
https://bitbucket.org/gds/cadastr/src
https://bitbucket.org/gds/cadastr/src/584824e66ea1/README.txt
[21:46:03] <gds> про структуры данных (там только map'ы всякоразные, ибо мне нужны были они сначала) -- https://bitbucket.org/gds/cadastr/src/584824e66ea1/src/cadastr.ml
про rtti -- https://bitbucket.org/gds/cadastr/src/584824e66ea1/src/cd_Typeinfo.ml
[21:46:31] <mrm> А тормозов там не будет из-за объектов?
[21:47:01] komar вышел(а) из комнаты: Replaced by new connection
[21:47:02] komar вошёл(а) в комнату
[21:47:12] <mrm> Я ещё очень мало с ними работал (только в виде всяких tree-walker-ов из camlp4)
[21:47:51] <gds> будут, конечно.  в ридмишке описал.  но, в большинстве случаев, там всё весьма быстро вызывается.  кроме того, можно закешировать это дело через let meth = obj#meth in ... meth args, тут будет один раз искаться метод, дальше -- как обычно.
[21:48:42] <mrm> а в сам OCaml реально RTTI прикрутить на уровне рантайма? (ценой увеличенного потребления памяти)
[21:49:01] <gds> а вообще, сейчас держу курс на runtime introspection, ею можно многое сделать, и через неё хочу работать с параметрическими типами, например.
[21:49:32] <mrm> Мне не хватает в окамле возможности напечатать любую структуру данных
[21:49:51] <mrm> Вечно всякие велосипеды приходится писать или использовать sexplib (тяжеловесное решение)
[21:49:52] <gds> rtti в окамл -- сложно, как я понял.  в окамле неплохо оптимизируют большинство простых случаев (unboxing всякий например), поэтому там бывает аж некуда всунуть указатель на rtti.
[21:50:13] <gds> ну вот, мне тоже не хватает этого, да и многого другого.  вот, как-то взялся.
[21:51:09] <gds> но у меня там будет ручная работа -- для типа данных нужно будет описать простой код, разбирающий этот тип в значения "универсального типа", с которыми дальше будет работа.  это пишу удобным и для людей, и для генерения, если вдруг будет потом нужда.
[21:52:54] <gds> например,
value ti_option : #ti 'a -> ti (option 'a) = fun ti_a ->
  ti_sum_type ~name:"option" ~args:[ti_a] & fun [ None -> ti_variant "None" [||] | Some x -> ti_variant "Some" [| ubox ti_a x |] ];
[21:52:59] <mrm> Может проще форкнуть F# и сделать из него OCaml? (с функторами, препроцессором и прочей полезной дребеденью) :-)
[21:53:07] <gds> форкай, чо.
[21:53:11] <mrm> :-D
[21:53:26] <gds> надо будет mono тащить везде.
[21:53:33] <mrm> Так он маленький
[21:53:57] <gds> и глюкавенький, и тормознявенький, по слухам.
[21:54:22] <mrm> Ага. Регулярно трахаюсь с Boehm GC, который там используется :-)
[21:54:41] <gds> лучше backend к окамлу написать.  кстати вот, буквально сегодня думал, в контексте параллельности.
[21:54:47] <mrm> Он не глючит, но иногда сильно тормозит и течёт
[21:55:06] <mrm> Так есть же. http://www.pps.jussieu.fr/~montela/ocamil/
[21:55:19] <mrm> Вроде даже фурычит
[21:56:05] <gds> а про rtti -- мне нравится подход, в котором rtti нужно в высокоуровневом коде, но без необходимости тащить rtti в код низкоуровневый, и вообще, не соединять воедино rtti и значения, в том числе для unboxing и для потребления памяти.  то есть, сделать rtti: 1. опциональным довеском, 2. явно-передаваемой штукой.  Долго думал об этих решениях, и кадастр будет идти именно в эту сторону.
[21:56:44] <mrm> А нельзя такую вещь прикрутить при помощи препроцессора?
[21:56:58] <mrm> Но только, чтобы этим реально удобно было пользоваться?
[21:58:14] <mrm> Этакий deriving 2.0
[22:02:15] <gds> можно.  Но для deriving -- почему бы не взять deriving?
Я почему не взял -- потому что он не дружит с original syntax с одной стороны, и потому что хотел в некоторых случаях явно указывать, например, "это значение вариантного типа не нужно использовать для хеширования, оно должно сравниваться такими-то образом друг с другом, а показывать его надо совершенно третьей функцией".
Препроцессором -- можно, конечно.  Но мне это было неинтересно, ибо original syntax говно, а для revised поддерживать препроцессор -- уныло.  В отличие от этого, решить вопрос не препроцессором, а _библиотекой_ -- я счёл весьма крутым делом.
А если поверх кадастра кто-нибудь сделает препроцессор -- мне скорее понравится, чем нет.
[22:02:44] <gds> (учитывая gpl, "меня скорее никто не будет спрашивать, чем ...")
[22:03:53] <mrm> а Original Syntax -- действительно полное говно по сравнению с Revised?
[22:04:24] <mrm> Я, кажется, уже ко всем косякам привык. Просто ставлю скобочки, когда нужно
[22:05:33] <mrm> Хотя.. это говорит человек, который на Делфи пишет :-)
[22:05:42] <mrm> Возможно, у меня не очень высокие стандарты
[22:05:43] <gds> по личным ощущениям -- да.  Но он умеет все синтаксические расширения, а revised -- вроде мало.
Ну, если привык -- замечательно.
Кроме скобочек там ещё и запятые есть, ('a, (('b, 'c) ty2), 'd) ty1 всякие.
[22:06:00] <mrm> Замыкания в новом Делфи -- http://slexy.org/view/s219zq67GI
[22:06:11] <mrm> Вот это я называю _говном_ :-)
[22:06:21] <mrm> а OCaml после такого кажется раем земным
[22:07:53] <gds> это да.  Однако, увидев хорошее, не хочется использовать плохое, тем более, когда хорошее включается простым тегом "camlp4r".
[22:08:18] <mrm> а Емакс с новым синтаксисом дружит?
[22:08:36] <gds> я не использую емакс для синтаксиса.  чисто "скомпилировать" и "перейти на ошибку".
[22:08:43] <mrm> Он старый-то не особо круто понимает
[22:08:59] <gds> кстати, из местной истории.  похапэшника научили азам х-я (не я учил!), а у него теперь не встаёт на похапэ.  бида.
[22:09:10] <mrm> :-))))
[22:10:27] <mrm> gds: а в чём код редактируешь?
[22:11:45] <gds> в последние годы в емаксе только.  но описанной функциональности мне хватает.
[22:12:06] <gds> ещё tab для "перейти к инденту предыдущей строки", ну и прочие мелочи.
[22:12:46] <mrm> Ну вот выравнивание-то для старого синтаксиса работает не очень круто
[22:12:58] <mrm> Тупит на комментариях и на всяких |>
[22:13:21] <mrm> И ещё в тех местах, где у окамла косячный синтаксис (вложенные матчинги)
[22:17:36] <ermine> чем это косячный? begin end
[22:17:38] <gds> ну да, все caml-mode, которые щупал (вроде официальный и туарег) чем-то бесили.  Да и вообще, textuality -- хороший принцип: как надо, так и делай свою разметку кода.  Я бы затрахался фиксить эти сраные елисповые режимы под свои нужды раньше, чем начал бы что-то кодить.  Для меня исходник -- в первую очередь текст, который автор даёт (независимо от того, кто этот автор).
[22:17:52] <ermine> или валить на хаскиль, старательно выстукивая пробелы
[22:18:12] <mrm> :-)
[22:18:38] <mrm> Ну зачем же сразу _валить_? Можно использовать и то и другое и третье
[22:19:16] <ermine> хаскиль палюбому круче! там функции везде инлайнятся!
[22:19:20] <gds> ermine: а у тебя в исходниках плохая индентация?  Тогда мы спешим к вам!
[22:19:48] <mrm> gds: ">>=" в кадастре -- это монады?
[22:19:52] <gds> ermine: у них без этого не срасталось с лентяйкой.  ничего личного.
[22:20:11] <ermine> gds: его туарег выстукивает
[22:20:35] <gds> mrm: если в кадастре ">>=", это монадный bind (перевёрнутый слегка).  И иногда это удобно.
[22:21:34] <ermine> а xsd кодить таки среднетяжеловато
[22:21:35] <gds> но там ещё есть моноиды и функторы!  (к сожалению ли, к счастью ли, но больше ничего из нужных из матана вещей не удалось или не захотелось закодить.)
[22:21:52] <ermine> втупую перенести структулы в камло не получится
[22:22:34] <ermine> хотя бы вот нужны последовательности
[22:22:48] <mrm> ermine: а как из камла в хаскелл перенесёшь код, активно использующий функторы? слабо сбацать аналог ocamlgraph? :-)
[22:22:55] <gds> вон, скоро буду решётки-полурешётки кодить --
class type lattice ['a] = object
method meet : 'a -> 'a -> 'a;
method join : 'a -> 'a -> 'a;
end;
[22:23:51] <gds> mrm: да делается при желании.  С другой стороны, угрёбищно, требует чтение олега (translucent functors / skolemization(?)), и вообще, неправославно.
[22:23:54] <ermine> gds: как в камле выглядят последовательности элементов?
[22:24:03] <gds> ermine: как сделаешь, так и будут.
[22:24:37] <ermine> gds: если брать список, то где у него начало последовательности?
[22:25:46] <ermine> надо значит подумать как без них обойтись
[22:25:58] <mrm> Меня просто достало уже активно муссирующееся в интернетах мнение, что "OCaml -- императивный Хаскелл, в котором нет Х, Y, Z". Это, блин, разные языки со своими плюсами и минусами :-)
[22:26:56] <ermine> императивный, факт
[22:27:13] <mrm> Но это не "недохаскелл", а просто другой язык
[22:27:19] <ermine> иначе сдохнуть можно от чистоты
[22:27:25] <mrm> Со своими классными фишками (система модулей, camlp4)
[22:27:50] <ermine> сам человек кстати не выживает в стерильной обстановке
[22:28:26] <ermine> так что надо быть ближе к Природе!
[22:28:51] ermine поглумилась и пошла дальше мучаться с xsd
[22:29:12] <mrm> ermine: Ты под последовательностями подразумаеваешь нечто вроде Enum из батареек?
[22:29:43] shaggie вошёл(а) в комнату
[22:29:56] <ermine> не видела
[22:30:22] <mrm> ermine: http://batteries.forge.ocamlcore.org/doc.preview:batteries-alpha3/html/api/Enum.html
[22:31:06] <mrm> Там можно из почти любой структуры данных получить этот Enum и сделать из Enum почти любую структуру
[22:32:37] <ermine> а чем от списка отличается?
[22:32:43] <ermine> или от стрима
[22:33:25] <mrm> Ленивостью
[22:34:09] <mrm> ermine: http://batteries.forge.ocamlcore.org/doc.preview:batteries-beta1/html/api/Seq.html
[22:34:13] <ermine> а вот итерация по последовательности не показывает где конец первой субпоследовательности, в котором могут участвовать элементы части типов, разрешенных во всей последовательности
[22:34:38] <ermine> итерация гордо промчится до конца последовательности
[22:35:40] <mrm> [instant brain damage] :-) Сейчас, подумаю
[22:36:09] <ermine> имхо больше похоже на тьюплы списков
[22:36:44] <mrm> Бррр. Ничего не понял. Далеко мне до дзена :-)
[22:36:54] <ermine> и в спеке они запятыми как в тьюплах отображаются, хе
[22:37:18] <ermine> отлично
[22:38:51] ygrek вошёл(а) в комнату
[22:48:09] <ygrek> gds: непохоже что завтра релиз будет
[22:48:11] <gds> кстати, х-ь -- всего лишь тупой диалект агды.
[22:53:45] <ermine> а камло проще или сложнее х-ля?
[22:54:46] <ygrek> ну судя по тому что люди проект из двух файлов собрать не могут - сложнее
[22:56:04] <ermine> поэтому и библиотеки тааакие бееедные
[23:08:24] <mrm> ygrek: А что в этом сложного, если в стандартной поставке есть ocamlbuild?
[23:08:30] <mrm> Доки плохие?
[23:13:49] <gds> mrm: видел эти посты и текущее обсуждение?  глянь чатлоги на пару дней назад, там только это и было.
[23:13:55] <gds> и помни про кирпичи!
[23:16:27] <ygrek> mrm: если серьёзно, то да - доки убогие
[23:17:53] <mrm> Почитал. Ну вроде нормальная ситуация. Я тоже не сразу про ocamlbuild узнал (только когда подумал "наверняка есть дл")
[23:18:00] <mrm> я камла нормальные системы сборки
[23:18:03] <mrm> и нагуглил
[23:19:09] <mrm> Потом у меня много с ним было проблем, но только в хитрожопых случаях (типа сборки dll под винду)
[23:19:27] <mrm> Собственно, из-за этих проблем в этот чат и попал. Доки по ocamlbuild и camlp4 -- это ад
[23:21:49] <gds> там у человека принципиальная проблема: неудобно засовывать кирпичи в задницу.  даже несмотря на ocamlbuild.
[23:24:00] <ygrek> mrm: dll под винду на окамле, это да, для тонких ценителей
[23:24:53] <mrm> Скорее всего он просто про него не знал. А без ocamlbuild или ocamlmake автоматизация сборки больших камловых проектов -- воистину подвиг, достойный конного памятника в полный рост
[23:26:11] <mrm> О. Ocamldep, оказывается, умеет выдывать готовый make
[23:26:34] <mrm> Ну если такая фича реально есть и работает, то я вообще не вижу никаких проблем
[23:26:49] <gds> вообще-то, да, камлунити стродает (сраные какадемики!).  рассылки в целом мало.  форж появился поздно и, как бы сказать, не очень ок для совместной работы.  (гит-похаб и ведробитов появились тоже поздно, и централизации никакой.)  ирц -- говно, как и наш чятик, для ведения проектов, выяснения возможностей, перспектив, планов.
[23:29:09] <gds> вот говно.  Мне для многих вещей были бы полезны "иерархические планы" -- для работ, для камлодвижух, для реаллайфа.  сделать их, штоле.
[23:31:15] <mrm> gds: главное -- не начать писать план по написанию планов :-)
[23:31:23] <mrm> я так один раз ушёл в рекурсию и сорвал стек
[23:31:57] <gds> я владею тайнами Комбинатора Фиксированной Точки!  У меня план по написанию планов уже написан.
[23:32:43] <gds> а это больно, срывать себе стек?  как-то не пробовал...
[23:33:26] <mrm> Это приземляет и нормализует самооценку :-)
[23:33:58] <gds> у меня она и так нормализирована ниже некуда, мне это не повредит.
[23:34:22] <mrm> Ещё можно стек срывать эпилептическими припадками
[23:35:03] <mrm> Но я никому не рекомендую :-)
[23:36:36] <gds> ага, знакомый рассказывал такое.
также подобным образом, судя по ощущениям, является приём хорошей порции тгк.  (в виде молока или вообще через жкт, иное не обеспечит.)  Ну и про разные психетомиметики слышал подобное.
[23:38:29] <mrm> gds: Все проблемы камлунити из-за людей в этом камлунити, как и в случае с сообществом любого другого языка программирования. Увы.
[23:38:53] <gds> факт.
[23:38:55] <mrm> Сейчас частью духа сообщества OCaml является дух загнивания.
[23:39:32] <mrm> Что не мешает камлу оставаться полезным инструментом для некоторых эгоистичных паразитов типа меня :-)
[23:39:39] <gds> но ведь есть форт и плюсы, они лучше окамла!
[23:39:57] <mrm> Что значит "лучше" ?
[23:39:57] <gds> полезный, факт.
[23:40:01] <mrm> :-)
[23:40:33] <gds> лучше -- проще!  осемблир ещё проще, а х-ь и того проще!  в общем, люди странны.
[23:40:40] <mrm> Если окамл загнивает, значит реально загнивает спрос на него
[23:41:16] <mrm> Сейчас мейнстримные языки подтянулись. Вон, даже в Делфи появились нормальные, честные замыкания :-)
[23:41:32] <mrm> Разрыв между быдлоязыками и камлами сокращается
[23:42:08] <mrm> У быдлоязыков есть огромные плюсы -- много программистов (в т.ч. толковых), много библиотек (в т.ч. очень качественных)
[23:45:47] <mrm> Может камло станет сильно популярнее, если увидят люди, что можно легко на нём писать такие-то, да такие-то крутые приложения? (killer apps)
[23:45:55] <mrm> Вот не вижу я сейчас таких приложений
[23:46:37] <mrm> т.е. есть штуки, в которых OCaml проявляет себя во всей красе, но очень узкоспециализированные (компиляторы всякие, системы стат. анализа, coq)
[23:46:51] <mrm> Это не то, что может массы привлечь
[23:47:47] <gds> да понятно, что это не то.  но без какого-то сообщества сложно что-то подобное сделать.
[23:47:50] <mrm> Извиняюсь за поток мысли :-)
[23:48:10] <mrm> Самые прочные сообщества обычно образуются вокруг конкретных софтин
[23:48:27] <mrm> Сообщество разработчиков PostgreSQL, сообщество разработчиков Linux
[23:48:41] <mrm> Это люди, которые совместно что-то пишут
[23:48:50] <gds> можно, но уже всё давно написано.
[23:49:50] <ermine> уф
[23:50:08] <mrm> Например, можно на OCaml написать софтину, которая порвёт все конкурирующие софтины, написанные на C
[23:50:09] <ermine> парсилка xsd поехала, не ломается на 125 схемах
[23:50:29] <mrm> За счёт того, что будет написана на OCaml и её будет очень легко поддерживать и развивать
[23:50:31] <ermine> завтра надо будет детали парсить
[23:51:07] <mrm> Пример из хаскелля -- xmonad. Мелкая софтина, но хорошая и массовая
[23:51:18] <mrm> И нагнула по юзабельности все dwm-like аналоги
[23:51:32] <gds> mrm: можно, давай идеи.
[23:52:23] <mrm> ML языки рулят там, где нужно работать с нетривиальными структурами данных.
[23:52:40] <mrm> И ещё там, где нужны повышенные требования к надёжности и корректности
[23:53:31] <gds> везде можно сказать пользователю "перезапустите программу ок?".
[23:53:56] <mrm> Может какая-нибудь CAD система?
[23:54:26] <mrm> Например, нет нормального свободного трёхмерного када для параметрического моделирования
[23:54:50] <mrm> Нет потому, что это адски сложно делается. Порог вхождения высокий
[23:55:01] <mrm> Из лабы на C++ вряд ли вырастет хорошая система :-)
[23:57:14] <mrm> Чёрт. Идей как-то мало
[23:57:32] <mrm> Чуть было не предложил "текстовый редактор" :-)
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!