Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 25 апреля 2013< ^ >
f[x] установил(а) тему: OCaml / ОКэмл / Камль -- http://ocaml.org/ | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | KEEP CAML AND CURRY ON | F#, Coq - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:05] oln вышел(а) из комнаты
[00:43:25] komar вышел(а) из комнаты
[00:43:33] komar вошёл(а) в комнату
[01:08:23] Typhon вошёл(а) в комнату
[01:17:48] tilarids вышел(а) из комнаты
[01:18:51] tilarids вошёл(а) в комнату
[01:25:36] Kakadu вышел(а) из комнаты
[01:30:58] tilarids вышел(а) из комнаты
[01:31:15] Typhon вышел(а) из комнаты
[01:31:23] tilarids вошёл(а) в комнату
[01:43:18] tilarids вышел(а) из комнаты: Machine going to sleep
[02:01:38] Typhon вошёл(а) в комнату
[02:17:25] Zbroyar вышел(а) из комнаты: Replaced by new connection
[02:17:28] Zbroyar вошёл(а) в комнату
[02:25:03] Typhon вышел(а) из комнаты
[02:48:09] mrm вышел(а) из комнаты
[02:56:39] Zbroyar вышел(а) из комнаты
[03:06:16] Typhon вошёл(а) в комнату
[03:23:50] Typhon вышел(а) из комнаты
[04:06:44] Typhon вошёл(а) в комнату
[04:26:18] Typhon вышел(а) из комнаты
[05:07:22] Typhon вошёл(а) в комнату
[05:15:36] tilarids вошёл(а) в комнату
[05:24:56] Typhon вышел(а) из комнаты
[06:00:08] tilarids вышел(а) из комнаты
[06:03:40] tilarids вошёл(а) в комнату
[06:07:53] Typhon вошёл(а) в комнату
[06:25:53] Typhon вышел(а) из комнаты
[07:04:15] f[x] вошёл(а) в комнату
[07:08:27] Typhon вошёл(а) в комнату
[07:23:43] f[x] знал про выравнивание данных, но про то что позиция кода так влияет.. сюрприз
[07:25:41] Typhon вышел(а) из комнаты
[08:28:11] tilarids вышел(а) из комнаты: Computer went to sleep
[08:52:10] <f[x]> mrm: а нельзя просто отдельным проходом собрать все rose файлы?
[08:52:27] <f[x]> перед сборкой?
[08:54:17] <f[x]> а ocamlbuild знает что rose файлы получаются в результате сборки ml файла?
[08:54:35] <f[x]> если да - то как ты этого добился? это же надо кастомное правило для вызова компилера писать имхо
[08:54:50] <f[x]> несложно конечно - но копипастить надо
[09:06:45] oln вошёл(а) в комнату
[09:16:26] UncleVasya вошёл(а) в комнату
[09:52:47] UncleVasya вышел(а) из комнаты
[09:52:55] f[x] вышел(а) из комнаты
[10:23:22] zinid вошёл(а) в комнату
[10:44:09] ermine вошёл(а) в комнату
[10:52:45] f[x] вошёл(а) в комнату
[10:52:55] ftrvxmtrx вышел(а) из комнаты
[11:10:16] komar вышел(а) из комнаты: Logged out
[11:58:12] ftrvxmtrx вошёл(а) в комнату
[12:09:47] Typhon вошёл(а) в комнату
[12:19:35] Kakadu вошёл(а) в комнату
[12:20:57] komar вошёл(а) в комнату
[12:34:20] Typhon вышел(а) из комнаты: Replaced by new connection
[12:34:30] Typhon вошёл(а) в комнату
[12:34:35] Typhon вышел(а) из комнаты: Replaced by new connection
[12:34:45] Typhon вошёл(а) в комнату
[12:59:18] mrm вошёл(а) в комнату
[13:07:29] <mrm> f[x]: Придумал, как это сделать без кастомного правила для вызова компилятора (и без проверок на byte/native)
[13:07:33] <mrm> (04:15:25 AM) cakeplus: I've figured out a hack that allows me to solve the problem of forcing dependencies between .ml and .rose files:
(04:15:29 AM) cakeplus: After_rules -> pdep ["ocaml"] "roseDep" (fun param -> [param ^ ".ml.depends"])
(04:15:36 AM) cakeplus: Now if I tag A.ml with roseDep(B), then B.rose will get compiled _before_ ocamlbuild runs ocamldep on A :-)
(04:16:42 AM) cakeplus: (somehow, each time I mess with ocamlbuild I feel my hands being covered with blood) :-(
[13:08:29] <f[x]> т.е. в irc тебе ничего лучше не предложили?
[13:08:43] <mrm> f[x]: Абсолютно ничего :-)
[13:08:45] <f[x]> за вычетом того что руками нужно тэгить - вполне чистое решение
[13:09:20] <mrm> А вот теперь я буду этот теггинг автоматизировать (совсем нетривиальная задача).
[13:10:23] komar не понял проблемы совершенно.
[13:10:40] <komar> Шел бы я со своими мейкфайлами, да?..
[13:13:44] <mrm> Нетривиальная, т.к. эти зависимости есть в коде, но _мы не можем_ откомпилировать код, не зная этих зависимостей :-) (из-за того, что зависимости будут неудовлетворены, лол).
[13:15:10] <mrm> Вариант: нужно сделать отдельную программку, которая будет выдёргивать из кода зависимости, _не_ пропуская код через camlp4 :-)
[13:15:34] <mrm> (например, можно эти зависимости матчить регекспами)
[13:15:42] <mrm> Короче, ужос, ужос, ужос.
[13:15:53] <mrm> Метапрограммирование в OCaml -- ад и погибель.
[13:21:47] <f[x]> komar: слушаем решение на мейкфайлах :)
[13:22:10] <f[x]> mrm: а если из .ml.depends выдёргивать - не?
[13:22:30] <mrm> komar: Обычно я на мейкфайлах подобные штуки и пишу (точнее, при помощи omake). Но вот захотелось побольше автоматизации.
[13:22:57] <mrm> f[x]: Между откомпилированными модулями этих зависимостей нет. Это чисто compile-time зависимости.
[13:24:46] <mrm> Сейчас пример приведу...
[13:24:51] <mrm> http://slexy.org/view/s20BOIRXjU
[13:25:09] <mrm> Traverse -- макра на camlp4, которой нужна информация из DelphiAst.rose
[13:25:16] <komar> > Но вот захотелось побольше автоматизации.
[13:25:35] <komar> Мне тоже постоянно хочется.
[13:26:03] <komar> А через полчаса возникает ситуация, которая Никогда Не Возникает У Нормальных Людей, и я трачу в десять раз больше времени, чем если бы все делал руками.
[13:26:05] <mrm> И мы _не можем_ использовать ocamldep до тех пор, пока не сгенерируем DelphiAst.rose.
[13:26:41] <mrm> komar: Да, с ocamlbuild и camlp4 у меня регулярно подобные ситуации возникают :-(
[13:29:23] <mrm> Это наиболее проблемные для меня инструменты в экосистеме ocaml, и уже не первый год.
[13:29:28] <f[x]> komar: т.е. окамльбилд виноват что позволяет тебе сделать чуть более автоматизации чем мэйк, но при этом не покрывает 100% случаев
[13:29:29] <f[x]> оок
[13:29:35] <mrm> К сожалению, для camlp4 замены пока нет (fan в далёкой перспективе?), а у конкурентов ocamlbuild есть свои проблемы.
[13:29:44] <f[x]> mrm: есть -ppx
[13:29:45] <f[x]> в транке
[13:30:05] <komar> f[x]: он виноват в том, что он негибкий нихрена.
[13:30:07] <mrm> f[x]: Это же какая-то сырая неудобная какашка, нет? Там даже квазицитат нет.
[13:30:24] <komar> гну маке — это такая прикольная решалка графов с уродским язком.
[13:30:39] <f[x]> mrm: большинство проблем и непоняток camlp4 как раз с квазицитатами
[13:30:45] <komar> окамлебилд — это а давайти напишем систему чтобы усе лигко кампелировалось)))
[13:30:58] <f[x]> а в 95% случаев я с удовольствием обойдусь без них
[13:31:05] <f[x]> когда не надо много кода генерить
[13:31:12] <f[x]> когда надо - тогда без них больно, конечно
[13:31:21] <mrm> f[x]: у меня исчезли все проблемы с квазицитатами, когда я начал внутри цитат использовать revised syntax
[13:31:44] <mrm> Ещё я регулярно для своих DSL квазицитаты реализую
[13:31:59] <f[x]> mrm: ну ты крут
[13:32:06] <mrm> В примере по ссылке используется механизм квазицитат для Borland Delphi
[13:32:11] <f[x]> значит у 95% юзеров проблемы с квазицитатами
[13:32:18] <mrm> (это из моей системы для трансформации программ)
[13:32:20] <f[x]> а метапрограммирования им тоже хочется
[13:32:28] <f[x]> такое себе мета для бедных без квазицитат
[13:33:02] <f[x]> komar: ocamlbuild это решалка графов с динамическими связями
[13:33:10] <f[x]> всего навсего
[13:33:33] <komar> orly?
[13:33:41] <mrm> Ну судя по тому, что я прочитал в wg-camlp4, метапрограммирование -- не особо популярный подход среди окамльщиков. Окамльщикам простейшие вещи нужны (типа sexplib).
[13:33:41] <f[x]> основная проблема ocamlbuild в отсутствии спецификации
[13:33:48] <f[x]> komar: да
[13:33:50] <komar> Тогда почему ее не используют для сишечки?
[13:33:53] <komar> Гну маке говно же.
[13:33:54] <f[x]> используют
[13:34:11] <komar> Вау, надо заюзать.
[13:34:20] <mrm> komar: смотри cmake :-)
[13:34:41] <f[x]> просто правила встроенные есть только для камля
[13:34:58] <f[x]> а написать самому правила для сишечки не каждый сможет/захочет
[13:35:14] <komar> Кому сдалось встроенное говно, которое применимо для трех с половиной хеллоуворлдов?
[13:35:36] <f[x]> плюс делать сишный проект зависимым от всего камля - это где ты таких чудаков найдёшь
[13:35:59] <komar> Как будто камль тяжелый.
[13:36:03] <mrm> komar: Для многих программ ocamlbuild позволяет сборку автоматизировать _полностью_ (достаточно _tags написать).
[13:36:16] <mrm> Это просто отлично, что такая штука есть в стандартной поставке.
[13:36:35] <komar> mrm: многие программы — это три с половиной хеллоуворлда, которые можно собрать при помощи ocamldep > ... && make?
[13:36:39] <f[x]> mrm: ничего у тебя не получится, ocamlbuild покусал комара, и ему теперь больно
[13:37:22] <mrm> komar: Это почти любой проект, в котором для сборки не нужно прибегать к извращениям, типа моих с camlp4
[13:37:49] <komar> В любом нетривиальном проекте надо прибегать к извращениям.
[13:38:04] <f[x]> komar: ну прибегай
[13:38:29] <f[x]> это реально основной недостаток камля что у него в поставке есть какая-то тулза
[13:38:43] <f[x]> "присутствие" тулзы проблема, а не "отстутствие"
[13:38:49] <komar> Совершенно верно.
[13:38:55] <mrm> Вспомнил, где ещё у меня были проблемы с ocamlbuild -- при сборке DLL. Там пришлось ручками кучу команд в makefile наговнячить.
[13:38:58] <komar> А основная проблема хаскеля — это хакадж.
[13:39:21] <mrm> (но ocamlbuild всё равно использовался для сборки необходимых cmxs).
[13:40:46] Typhon вышел(а) из комнаты: Replaced by new connection
[13:40:56] Typhon вошёл(а) в комнату
[15:18:42] oln вышел(а) из комнаты
[15:19:14] oln вошёл(а) в комнату
[15:28:56] komar вышел(а) из комнаты
[15:28:59] komar вошёл(а) в комнату
[15:35:25] f[x] вышел(а) из комнаты
[15:51:19] mrm вошёл(а) в комнату
[15:51:19] mrm вышел(а) из комнаты
[16:16:48] klapaucius вошёл(а) в комнату
[16:31:32] zinid вышел(а) из комнаты
[17:46:06] tilarids вошёл(а) в комнату
[17:48:08] oln вышел(а) из комнаты
[17:50:04] UncleVasya вошёл(а) в комнату
[17:57:49] komar вышел(а) из комнаты: Logged out
[18:47:19] mrm вышел(а) из комнаты
[18:47:53] mrm вошёл(а) в комнату
[19:01:08] komar вошёл(а) в комнату
[19:03:03] tilarids вышел(а) из комнаты: Computer went to sleep
[19:21:39] tilarids вошёл(а) в комнату
[19:27:02] Typhon вышел(а) из комнаты: Replaced by new connection
[19:27:12] Typhon вошёл(а) в комнату
[19:27:22] ftrvxmtrx вышел(а) из комнаты
[19:30:38] tilarids вышел(а) из комнаты: Computer went to sleep
[19:30:52] oln вошёл(а) в комнату
[19:49:10] klapaucius вышел(а) из комнаты
[19:52:04] klapaucius вошёл(а) в комнату
[19:53:31] Kakadu вышел(а) из комнаты
[20:17:32] Zbroyar вошёл(а) в комнату
[20:26:35] Typhon вышел(а) из комнаты: Replaced by new connection
[20:26:45] Typhon вошёл(а) в комнату
[20:29:19] UncleVasya вышел(а) из комнаты
[20:35:03] Typhon вышел(а) из комнаты
[20:43:49] Kakadu вошёл(а) в комнату
[21:03:26] <Kakadu> gds: Ты когда-то хотел гуй клепать с камлем в связке?
[21:04:23] <gds> Kakadu: не просто хотел, но и клепал чуть-чуть.  Но labltk не ок.  А что таки случилось?
[21:04:57] <Kakadu> Как ты к QtQuick относишься?
[21:05:55] <Kakadu> Я сворганил на нём что-то похожее на камлобраузер
[21:06:40] <Kakadu> То собрать это всё не так просто, по причине что кутэ под маком какое-то поломаное, а под убунтой ничерта не линкуется?
[21:10:40] <gds> QtQuick -- почитал только сейчас, там qml.  О нём впечатления смешанные сходу, но на практике не использовал.  Тем более, пока не понял, как из программы работать с гуем.
Про линковку -- не знаю, надо плотно разбираться, а сейчас на это нет мозга.  Вебсокеты, мать их, делаю.
[21:15:57] <Kakadu> просто если тебе не лень остаавить на ночь компиляться кутэ, то можно попробовать собрать мою хрень
[21:19:40] komar вышел(а) из комнаты: Replaced by new connection
[21:19:40] komar вошёл(а) в комнату
[21:21:56] <gds> Kakadu: а какое-нибудь убунтовское libqt4* поставить -- не ок будет?
[21:22:11] <Kakadu> qt5 нада
[21:23:35] <Kakadu> Qt5 в бубунте есть, но линковка сломана
[21:23:57] <Kakadu> Либо у меня руки из жопы
[21:24:57] <gds> я qt5 в убунте не нашёл.  Но тут -- http://qt-project.org/downloads -- дают "Qt 5.0.2 for Linux 64-bit".  Брать?
[21:25:30] <Kakadu> бери
[21:25:38] <gds> и ещё интересны тенденции -- вообще, кто-нибудь будет использовать qt5, или его похоронят?
[21:25:55] <Kakadu> Ну KDE сейчас на него фапает
[21:26:11] <Kakadu> Хотят всё на QtQuick сделать
[21:27:34] <gds> ну-ну..  Посмотрим, загнётся ли kde.
Впрочем, качаю на малой скорости, чтобы не мешало, всё равно сегодня это не буду мучить.
Если можешь, оформи какую-нибудь репку, которую можно будет склонировать и прямо в ней поиграться с твоей линковкой.
[21:31:15] <Kakadu> Можешь начать с проверки того, что оно линкуется: https://github.com/Kakadu/lablqt/blob/qml-dev/qml/test_Qt5_availability
[21:31:57] <mrm> Kakadu: А под виндой твой прототип работать будет? :-)
[21:32:21] <Kakadu> хмммм
[21:32:31] <Kakadu> ну если по виндой есть yojson
[21:32:39] <mrm> (с кросскомпиляцией через mingw из сигвина)
[21:32:48] <mrm> Есть. Регулярно им пользуюсь.
[21:33:06] <Kakadu> j-street core наверное можно выпилить...
[21:33:16] <Kakadu> mrm: pkg-config есть?
[21:33:45] <Kakadu> ладно. обойдемся без него
[21:34:01] <Kakadu> Короче я пока не вижу почему не должно
[21:34:21] <Kakadu> А камло 4.00.1 падвендой есть?
[21:34:27] <mrm> Меня больше вопросы всяких линковок беспокоят, т.к. я внутри сигвина использую mingw-w64 и специальный окамл, который через него компиляцию выполняет :-)
[21:34:32] <mrm> Да, конечно, есть.
[21:36:10] <mrm> Но гуй мне сейчас приходится в делфи делать (и уже оттуда дёргать камлёвые DLL), хотя в поставку нашей софтины и рантайм Qt входит.
[21:36:30] <Kakadu> 4я кутэ?
[21:36:46] <mrm> Было бы здорово, если бы была возможность использовать Qt из камла, хотя бы для самых простых диалоговых окошек :-)
[21:36:49] <mrm> Да.
[21:37:08] tilarids вошёл(а) в комнату
[21:37:35] <Kakadu> 4я может внести неразрешимые проблемы ненужности моей поделки по причине кастрированной QtQuick в Qt4
[21:37:55] <mrm> Ясно.
[21:39:33] <Kakadu> Собственно, если вы переезжать на Qt5 не планируете, то мне можно не пробовать компилять это падвендой?
[21:39:39] <gds> но мне, если qt5 будет доступна в линупсах через полгода-год, таки будет полезно уметь из окамла работать с его гуем.
[21:40:15] <Kakadu> в 13.04 уже есть, но нихрена не работает)
[21:41:26] <gds> (однако, завтра меня дёргать мало смысла -- куча реаллайфа, может после обеда буду, согласно utc+0200, а то и вечером-ночером, но не уверен вообще.  В шаббат, вот, быть должен.)
[21:43:05] <mrm> Kakadu: Давно планируем совсем выпилить Qt :-) Но мне и для личных проектов такая штуковина пригодилась бы (т.к. в labltk нужных виджетов не хватает, а lablgtk сравнительно неудобно использовать).
[21:43:25] <Kakadu> Эх, не понравится тебе QtQuick
[21:43:41] <mrm> Возможно, что QtQuick стал бы убийцей Tk для быстрой и грязной разработки одноразовой гуйни :-)
[21:48:30] <Kakadu> mrm: достаточно одноразовая? http://wstaw.org/m/2013/04/25/plasma-desktopyp4892.png
[21:48:41] <mrm> Да, вполне себе.
[21:49:49] <mrm> Мне в одноразовых гуйнях обычно нужны списки выбора, листинги кода, всякие переключатели, скроллинги. Внешний вид значения не имеет :-)
[21:50:21] <mrm> Tk для такой гуйни отлично подходит.
[21:50:45] <mrm> Но в нём часто не хватает виджетов. В частности, нормальных таблиц и деревьев.
[21:52:48] <mrm> В отличие от gtk, tk удобно использовать в качестве целевой платформы для компиляции DSL.
[21:53:05] <mrm> Возможно, что и QML в этом отношении удобен :-)
[21:53:21] <Kakadu> Ой, вряд ли
[21:54:00] <mrm> А в чём дело? Это не такая уж и декларативная штука, как рекламируется?
[21:55:35] <Kakadu> А, ну да. Можно же и данные в qml запихать
[21:56:07] <Kakadu> Только я не уверен что будет, если тебе понадобятся скачащие циферки
[21:56:32] <mrm> А как там обработка событий реализована?
[21:57:14] <Kakadu> Можно обработчик на С++ писать, или на ecmascript быдлокодить
[21:57:33] <mrm> Например, если мне нужно параметры графика изменять в зависимости от положения ползунка?
[21:58:01] <mrm> javascript можно не ручками писать, а компилять в него свои dsl
[21:58:18] <mrm> (благо инструментов для колупания с js сейчас для окамла навалом)
[21:58:51] <Kakadu> Ну если ты умеешь генерить адекватный яваскрипт из чего-нить то проблем не будет
[21:59:20] <Kakadu> в QML можно вроде впендюрить браузерный канвас
[21:59:31] <Kakadu> Как раз для графиков отлично
[22:00:06] <mrm> С биндингами типа lablgtk есть такая беда -- если ты компилируешь код, использующий эти биндинги, то обязан это делать при компиляции камлёвого модуля (из-за одноэтапности camlp4).
[22:00:24] <mrm> а JS можно динамически компилировать и скармливать в Qt, так ведь?
[22:00:51] <mrm> т.е. имеем то же преимущество, что есть у Tk
[22:01:38] <Kakadu> mrm: можно динамически нагенерить .qml файл и подгрузить его, если ты об этом
[22:02:03] <mrm> По поводу броузеров: была идея написать на плюсах программку, создающую окно и один большой виджет с вебкитом, а потом из камла загружать в этот "гуй" свои "веб" приложения :-)
[22:02:53] <mrm> Kakadu: Да, об этом, т.к. гуй часто динамически строить нужно.
[22:13:05] mrm вышел(а) из комнаты
[22:19:30] tilarids вышел(а) из комнаты: Logged out
[22:19:36] tilarids вошёл(а) в комнату
[22:20:04] tilarids вышел(а) из комнаты: Logged out
[22:28:42] ermine вышел(а) из комнаты
[22:41:27] ftrvxmtrx вошёл(а) в комнату
[22:42:41] mrm вошёл(а) в комнату
[22:43:59] mrm вышел(а) из комнаты
[23:51:46] mrm вошёл(а) в комнату
[23:56:10] oln вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!