Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 13 октября 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
Конфигурация комнаты
Участники комнаты

GMT+4
[00:02:59] zert вышел(а) из комнаты
[00:05:37] Typhon вышел(а) из комнаты: Replaced by new connection
[00:05:38] Typhon вошёл(а) в комнату
[00:47:33] ygrek вышел(а) из комнаты
[00:59:22] ygrek вошёл(а) в комнату
[01:05:57] komar вышел(а) из комнаты: Replaced by new connection
[01:05:58] komar вошёл(а) в комнату
[01:09:44] <ygrek> Kakadu: файл переименуй в .c и `-cc g++` убери
[01:54:37] ygrek вышел(а) из комнаты
[03:52:43] Typhon вышел(а) из комнаты
[04:09:36] komar вышел(а) из комнаты: Replaced by new connection
[04:09:38] komar вошёл(а) в комнату
[07:45:39] zert вошёл(а) в комнату
[08:31:12] gds вошёл(а) в комнату
[09:29:50] letrec вошёл(а) в комнату
[09:29:58] letrec вышел(а) из комнаты
[09:30:13] letrec вошёл(а) в комнату
[09:53:58] letrec вышел(а) из комнаты
[10:21:25] ygrek вошёл(а) в комнату
[10:21:28] <gds> f[x], Kakadu, http://caml.inria.fr/mantis/view.php?id=4621 про -cc g++  -- может -cc g++ не работала именно из-за использования запомоенной версии?
[11:18:14] Kakadu вошёл(а) в комнату
[11:21:14] f[x] вошёл(а) в комнату
[11:25:35] <Kakadu> zert: манглить руками это сейчас так и есть, но это не решает вопрос какой конструктор юзать при создании камлевого класса
[11:27:14] ermine вошёл(а) в комнату
[11:27:58] <f[x]> хм, но на .cpp камль всё равно скажет - не знаю что это такое
[11:32:46] <gds> вообще, хотел изначально фичереквест открыть, типа "сделайте-ка мне так, чтобы для .cc подсовывался g++".
а .cpp -- это файлы сишного препроцессора!1111
[11:34:19] <Kakadu> мински хочет начать писать вики-статьи про кору и спрашивает где бы ему это лучше начать делать?
[11:35:34] <f[x]> gds: такой реквест был
[11:35:52] <Kakadu> что-то плохой месяц. Вначале Джобс, потом Ритчи
[11:36:22] <gds> ненене, джобс -- это как раз ок.
[11:36:42] <gds> f[x]: по ".cc" в мантисе не ищется.
[11:36:50] <Kakadu> думаю что если бы что-то случилось с гейтсом, то все бы радовались
[11:37:48] <gds> для меня жопц и гейц эквивалентны -- оба маркетолухи, оба распространяли закрытую ос, провоцирующую впадание в ональное рабство.
[11:38:44] <Kakadu> а я настолько молод и зелен, что с творениями яюлочников не успел столкнуться
[11:39:35] <gds> а я настолько брезглив, что принципиально не хотел сталкиваться с их творениями.
[11:44:20] ygrek вышел(а) из комнаты
[11:44:38] <f[x]> gds: таки не находится
[11:46:25] <gds> собственно, что меня остановило -- то, что надо будет в мейкфайлах прописывать плюсовый компилятор, а вдруг там какие-то проверки ещё будут...  в общем, нетривиально.  разве что по os_type и toolchain(?  mingw/msvc) определять, g++ или что другое будет, ну и в configure дать возможность передавать.  я бы послал на их месте, наверное.
[11:50:38] <Kakadu> я даже не знаю что сказать... пока оставлю как есть
[11:51:57] <gds> Kakadu: если с -ccopt -xc++ работает, и достаточно будет переименовать файлы в .c -- лучше так и сделать, ибо `ocamlc -where` -- это криво, а сишечьный канпелятор запускать окамл умеет.
[11:57:41] <gds> а зачем оазис пытается инсталлить тесты?  http://paste.in.ua/3181/  да ещё и не туда.
[12:01:57] <f[x]> Install: false
[12:07:20] Typhon вошёл(а) в комнату
[12:07:46] <gds> f[x]: благодарю, проблема решена.  Но зачем вообще инсталлить тесты -- это для меня загадка.
[12:10:24] ermine щас воспользуется правом коммита в лаблкути
[12:10:24] <f[x]> бинарник может использоваться не только для тестов
[12:10:42] <f[x]> т.е. у меня например cli тулза содержит в себе юниттесты
[12:10:42] <gds> понял.
[12:19:27] <gds> ermine: ну и долго мне эфпячить ещё?
[12:19:44] <Kakadu> и я эфпячить начал
[12:19:58] <Kakadu> gds: ща задидосим гитхаб)
[12:20:11] <gds> в 4 руки!
[12:20:33] <gds> все на битбакет!
[12:21:16] <Typhon> f[x]: но зачем?
[12:21:20] <Kakadu> gds: слишком тонко, я не понял про битбакет
[12:21:32] <gds> заддосим же гитхаб, он ляжет.
[12:21:52] <Typhon> кстати, нэйтив топлевел пробовали?
[12:25:44] <gds> у меня в топлевеле настолько мелочёвка, что смысла пробовать мало.
[12:25:53] <ermine> Kakadu: усе, нагадила
[12:26:53] <gds> ermine: по-маленькому.
[12:27:10] <gds> давай ещё потужься!
[12:27:31] <ermine> gds: зато собирается
[12:27:35] <f[x]> Typhon: пуркуа бы и не па?
[12:28:04] <Kakadu> ermine: а почему ты предпочла фиксить .gitignore вместо test_gen/test6/.gitignore?
[12:28:05] <ermine> правда непонятно что делать с недостающими инклюдами, я их пока через переменные gcc/g++ добавляю
[12:28:32] <f[x]> а, помню почему, чтобы все тесты были вкомпилены в бинарник
[12:28:56] <ermine> Kakadu: я тут щас у себя тоже так везде делаю, чтобы не мозолило в git status и явно убирать явную помойку
[12:29:07] <ermine> явную помойку - не в gitignore, а удалить
[12:29:17] <ermine> а то помойка  от сборки
[12:29:27] <f[x]> т.к. тесты разбросаны по коду и сами себя регитрируют, с отдельным бинарником надо следить чтобы все модули влинковались
[12:29:38] <f[x]> а в cli тулзу я знаю точно что всё влинковываеься
[12:29:41] <f[x]> как-то так
[12:29:57] <ermine> ну можно еще как-то унифицировать имя тестов
[12:30:29] <ermine> Kakadu: если есть идеи как упростить - упрости
[12:31:27] <ermine> Kakadu: в оазисе все экзешники создаются как *.byte и *.native, их достаточно указать в игнорилке
[12:32:04] <ermine> так, следующий шак - нарисовать окошко...
[12:32:05] <Kakadu> ermine: а что может быть унифицированнее чем test['0'-'9']* ?
[12:32:31] <ermine> Kakadu: *.byte *.native
[12:33:52] <ermine> а если честно - я не присматривалась, скопировала из git status и впастила
[12:34:35] <Kakadu> ermine: да я просто докапываюсь)
[12:35:52] ermine запустила (впервые!) test6/test и оно благополучно ушло в сегфолт
[12:36:05] <ermine> >.<
[12:36:13] <Kakadu> а на маке работало?
[12:36:26] <Kakadu> ermine: попробуй остальные тесты
[12:37:57] <ermine> strlen() где-то
[12:38:27] <ermine> ща в приват кину
[13:00:01] <ermine> все тесты падают, даже окошка не нарисовать :)
[13:02:32] <Kakadu> это не я , это всё glibc!..
[13:27:00] <Kakadu> интересно, что пуш ermine в дашборд гтхаба не попал, а gdsовский попал
[13:34:16] <Kakadu> сегодня прочитал что на кафедральном семинаре у нас скоро один бывший студент расскажет про "Элиминация стереотипного кода в программах на языке Objective Caml". Его дипломной рулил Булычев
[13:35:25] <gds> интересны подробности рассказа.
[13:36:34] shaggie вошёл(а) в комнату
[13:36:52] ermine нашла туториал по кути и читает
[13:37:10] <ermine> вот если его отображение на камло будет работать сразу - то можно жить
[13:37:20] <ermine> в смысле первый же пример
[13:39:27] komar вышел(а) из комнаты: Replaced by new connection
[13:39:28] komar вошёл(а) в комнату
[13:39:46] <Kakadu> ermine: http://doc.qt.nokia.com/latest/layouts-basiclayouts.html --- это test5 e vtyz
[13:39:50] <Kakadu> у меня*
[13:41:01] <ermine> о
[13:41:05] <ermine> надо закопать
[13:42:38] <Kakadu> кого?
[13:43:29] <ermine> а чем qmake отличается от make?
[13:44:22] <Kakadu> qmake делает из .pro-файла Makefile
[13:44:23] <ermine> а, создает мейкфейл
[13:45:23] <ermine> вот первый пример с одной кнопкой на с пашыт
[13:45:40] <ermine> щас переложим его на камло
[14:02:28] <ermine> Kakadu: у qt есть набор стандартных примеров?
[14:02:42] <ermine> вот у lablgtk есть богатый набор примеров
[14:10:58] <ermine> ща еще нагажу в репу lablqt
[14:14:45] <ermine> а не
[14:17:06] <Kakadu> ermine: да. Если запускать qtcreator то можно там наоткрывать примеров. (если установлен пакет типа qt4-demos или как у вас там на фряхе)
[14:20:57] <ermine> ясно
[14:23:19] <ermine> Kakadu: пример из двух строчек - создать аппликешн с пустым аргументом и exec его валится сразу
[14:23:38] <Kakadu> что говорит?
[14:24:12] <Kakadu> я просто сейчас на работе и нифига не знаю как у меня это же работает
[14:24:51] <ermine> ладно
[14:27:09] <ermine> #0  0x000000080169be89 in QString::fromLocal8Bit ()
[14:27:20] <ermine> забавно
[14:28:14] <ermine> надо поискать насчет локалей
[14:35:48] <ermine> Kakadu: это действительно из аргументов
[14:36:12] <Kakadu> ermine: "из" или "из-за"?
[14:36:47] <ermine> из-за них
[14:37:08] <Kakadu> осталось понять как пофиксить
[14:37:08] <ermine> qcoreapplication:arguments
[14:39:48] <Kakadu> http://se.math.spbu.ru/SE/diploma/2011/Mechtaev%20Sergej%20-%20text.pdf
диплом Мечтаевский --- что он будет рассказывать на этом семинаре
[14:42:29] <ermine> Kakadu: рекомендовала бы юзать CAMLprim декларации в биндинге, а не просто value
[14:43:22] <ermine> CAMLprim value fun(value arg) { .. CAMLreturn(Val_unit); } где-то так
[14:43:28] <Kakadu> ermine: я пробовал и они препроцессором превращались в пустое место. В чем их смысл?
[14:43:48] <ermine> Kakadu: ну вообще лучше придерживаться этого стиля
[14:44:28] <ermine> Kakadu: про это расскажут f[x] & gds
[14:45:43] <gds> не, забыл.  но это на случай всяких там __declspec, для сошек/дллок, что-то такое в ассоциативной памяти крутится.  конечно, лучше именно CAMLprim, бывают (теоретически) платформы, где он не пуст.
[14:52:56] <ermine> а еще там возвращается абстрактный тип просто так, value v = new шняга из qt
[14:53:40] <Kakadu> ermine: ?
[14:54:57] <ermine> ну обычно через caml_alloc резервируют местечко в куче и пихают туда
[14:55:28] <ermine> есть такой тэг Abstract_tag для этого случая
[14:55:54] <ermine> впрочем, это непонятно что  делать, если насоздавать тыщи таких штучек, gc будет тормозить
[14:56:35] Kakadu ничего не знает об этом
[14:57:05] <ermine> Kakadu: а пчу cstubs.cpp такой маленький файл, а что компиляется тогда 15 минут?
[14:57:44] <ermine> Kakadu: про это есть в стандартном мануале камла, глава 10 или 11
[14:58:37] <Kakadu> там основное время конпеляции вроде classes.ml
[14:58:53] <Kakadu> причем если положить на натив, но компиляется сильно быстрее
[14:59:44] <Kakadu> и ещё я был бы рад услышать как правильно порождать файл classses.ml. Ибо то, что там есть мне пока не очень нравится, но ничего поделать я с ним не могу.
[14:59:44] <ermine> а откуда classes.ml строится?
[15:00:31] <Kakadu> ermine: из xmlиины как и всё остальное... Или что ты имеешь ввиду?
[15:01:07] <ermine> я думала что увижу тыщи строк кода в classes.ml
[15:01:16] <ermine> а там полэкрана кода
[15:02:16] <Kakadu> ну в те времена когда я не умел отрезать много чего из самой-главной-xmlины, этот classes.ml весил 10 метров от ocamlopt отжирал полтора гига
[15:02:20] <ermine> ваще ахтунг какой-то
[15:04:24] <ermine> шож-то теперь делать, пробовать написать диндинг к двум функциям qapplication create и exec и пробовать запускать
[15:04:44] <Kakadu> ermine: напомни что там у меня сейчас? в classes.ml
[15:05:41] <Kakadu> ermine: для qapplication сейчас используется биндинг написанный руками:
https://github.com/Kakadu/lablqt/blob/master/test_gen/cstubs.cpp#L12
[15:11:19] f[x] вышел(а) из комнаты
[15:15:02] Kakadu afk на 1 пару
[15:18:54] ygrek вошёл(а) в комнату
[15:20:57] bobry вошёл(а) в комнату
[15:28:56] bobry вышел(а) из комнаты
[15:43:25] ygrek вышел(а) из комнаты: Replaced by new connection
[15:43:26] ygrek вошёл(а) в комнату
[15:51:00] f[x] вошёл(а) в комнату
[16:20:03] ermine столкнулась с той же проблемой, о которой Kakadu вчера плакался - как заставить камло компилять cpp файлы
[16:24:38] <ermine> бяда-бяда
[16:24:42] <ermine> надо поискать
[16:24:51] <ermine> а то я свое детище в оазис загнала
[16:25:28] <gds> ermine: ха-хаа!  вот ты и сделай "как правильно", пока аффтара нет рядом!
[16:26:21] <ermine> gds: а чо, совсем незя?!
[16:26:26] <ermine> f[x]: совсем незя?
[16:27:12] <f[x]> ermine: http://git.ocamlcore.org/cgi-bin/gitweb.cgi?p=hypertable/hypertable.git;a=blob;f=_oasis;hb=HEAD
[16:29:35] <ermine> -x c++?
[16:30:09] <ermine> ща
[16:34:30] <ermine> а там нельзя смешивать инклюды с .h и без?
[16:34:44] <f[x]> почему?
[16:36:33] <ermine> а, не, проблема в другом месте
[16:57:41] <ermine> ну и развлекуха
[17:24:42] <ermine> шота не могу заставить биндинг увидеть функции из такого файла
[17:35:10] <ermine> идиотизм
[17:35:12] <f[x]> extern "C" не забудь
[17:35:16] <ermine> extern "C" надо
[17:35:22] <ermine> скомпилилось
[17:39:21] <Kakadu> чтонить интересное всплыло пока меня не было?
[17:40:10] <ermine> неа
[17:43:44] <gds> Kakadu: не.  ermine прощёлкала шанс сделать правильно с -x c++
[17:44:10] <Kakadu> gds: "пока аффтара нет рядом"?
[17:44:14] <gds> Так!
[17:45:05] <ermine> а вот не падает
[17:46:19] <ermine> вооьще не падает
[17:53:58] <ermine> а вот теперь упало
[17:54:05] <ermine> бага у тебя
[17:54:22] <ermine> осталось понять что не так в копировании аргумнтов
[17:55:30] <Kakadu> ermine: ты про https://github.com/Kakadu/lablqt/blob/master/test_gen/cstubs.cpp#L12 ?
[17:56:18] <ermine> не, это была моя бага
[17:56:21] <ermine> не падает
[17:57:03] <ermine> но у меня разница в обвязке camlprim и caml_alloc, осталось проверить на рисовании виджетов
[17:58:39] <ermine> можно взять твой cstubs.c и переделать?
[17:58:50] <ermine> хотя на сегодня уже лень, есть же свои проекты
[18:00:20] <ermine> шота устала от нового языка
[18:00:42] <Kakadu> переделай
[18:01:24] <ermine> Kakadu: а виджеты оно откуда рисует - из cstubs.c?
[18:02:00] <Kakadu> нет, там только создание и запуск аппликухи а также соединение слотов
[18:02:12] <Kakadu> make_root_widget можешь выкинуть
[18:03:30] <ermine> да выкидивай сам лишнее :)
[18:04:18] <ermine> хм, уже дофига файлов .cpp
[18:18:31] <Kakadu> в out/cpp их действительно дофига
[18:19:25] <ermine> а как генеришь?
[18:20:03] gds вышел(а) из комнаты: Replaced by new connection
[18:20:04] gds вошёл(а) в комнату
[18:20:18] <Kakadu> https://github.com/Kakadu/lablqt/blob/master/xml/cppGenerator.ml
[18:20:52] <Kakadu> хотя за некоторые куски кода должно быть стыдно
[18:33:44] <Kakadu> я тут прочитал как на айпаде закрыть аппликуху. Это ппц
[18:36:35] <Kakadu> в линуксе проще же
[18:37:20] <Typhon> о
[18:37:21] <Typhon> а как?
[18:37:23] <Typhon> %)
[18:38:11] <Kakadu> Ю Double-tap the home button to see the list of running apps. Press and hold on one of the apps and in a moment a little circle with a - in it will appear on every app. Tap the circle to completely close the app.
[18:38:14] <Kakadu> > *
[18:39:43] <ermine> это наверное про force quit
[18:51:55] <Kakadu> gds: а в JS тоже любят hg больше гита
[18:52:27] <Kakadu> так что gds шарит в VCS
[18:52:29] <gds> верю.  Только вот, если они такие умные, почему они core кривую сделали, думаю я.
[18:52:39] <gds> хоть, блин, в гитарасы иди.
[18:52:58] <gds> ясное дело, добровольно не пойду, hg-git работает нормально.
[18:53:21] <zert> Kakadu: в андроиде ещё хуже
[18:53:36] <Typhon> в ипаде правда не надо выключать аппы
[18:53:46] <zert> а в андроиде надо
[18:53:52] <Kakadu> gds: кривая потому что фряха мало распространена венда не нужна
[18:54:00] <zert> ибо некоторые иногда начинают глючить и без перезагрузки не работают
[18:54:07] <Kakadu> Typhon: а почему не надо?
[18:54:17] <zert> правда, в таких приложениях обычно в менюшке пункт Exit есть
[18:55:44] <Typhon> Kakadu: они работают
[18:55:49] <Typhon> зачем их закрывать
[18:56:02] <Typhon> они там сами как-то саспендятся и разсаспендиваются
[18:56:44] <Kakadu> Typhon: они не работают. Они повисли. Они на нажатия не откликаются. Их нада убить!!!!!
[19:04:18] gds вышел(а) из комнаты: Replaced by new connection
[19:04:19] gds вошёл(а) в комнату
[19:07:07] Kakadu вышел(а) из комнаты
[19:50:09] Typhon вышел(а) из комнаты
[20:03:52] Typhon вошёл(а) в комнату
[20:07:44] Kakadu вошёл(а) в комнату
[20:09:16] komar вышел(а) из комнаты
[20:41:55] Typhon вышел(а) из комнаты
[20:46:34] komar вошёл(а) в комнату
[21:41:06] shaggie вышел(а) из комнаты
[21:48:01] <ermine> фух, завелась часть гениальной идеи парсинга
[21:49:59] klapaucius вышел(а) из комнаты
[21:53:00] bobry вышел(а) из комнаты
[21:53:20] bobry вошёл(а) в комнату
[21:59:13] <Kakadu> что-то под вечер с порождение кода вообще грустно
[21:59:59] <ermine> Kakadu: я вижу чо ты там camlprim куда-то записал на гитхуб, но имхо главное - засовывать абстрактные типы в выделяемую память caml_alloc_small(1, Abstract_tag), пример можешь посмотреть на github.com/ermine/mltls
[22:00:43] <ermine> возможно что у меня gc как-то преждевременно прибирает (value)Struct *data
[22:01:04] ermine отчаливает
[22:01:44] <Kakadu> что-то гитхаб опять не открывается... (
[22:02:10] <Kakadu> у akamai какие-то проблемы
[22:02:39] <ermine> а у него какая ось?
[22:03:00] <Kakadu> у кого?
[22:03:29] <ermine> акамаи? я думала это ник :)
[22:03:39] <Kakadu> не, это компания
[22:04:08] <Kakadu> вроде отлагало
[22:04:23] <ermine> а
[22:05:57] <ermine> ну и фиг с ними
[22:05:59] ermine вышел(а) из комнаты
[22:15:08] Typhon вошёл(а) в комнату
[22:38:36] Typhon вышел(а) из комнаты: Replaced by new connection
[22:38:39] Typhon вошёл(а) в комнату
[22:43:29] <Kakadu> gds: пока ещё помню.
Ты не соглашался с политикой  в core чтобы контейнер ставить первым аргументом функции, ссылаясь, что тебе часто надо контейнер пропихивать черех пайплайн. Лично у меня сложилось впечаление, что это не проблема, т.к. все остальные аргументы функции обычно именованые
[22:47:40] <gds> Kakadu: я и не соглашаюсь с именованными аргументами во всём публичном апи, так как уважаю предупреждения компилятора, они очень помогают.
Например, попробуй объяви
let list_map ~f ~lst = List.map f lst
и при _tags: warn_A (либо -w A) примени что-то к этой функции без полного указания меток.
То есть, использовать кору, где КороList.map : 'a list -> ~f:('a -> 'b) -> 'b list -- это значит везде при List.map указывать ~f: перед собственно функцией.  Пока не думал, могу ли пойти на такое.
[22:49:20] <Kakadu> gds: ну я пошел
[22:49:37] <Kakadu> теперь без этого никак)
[22:49:55] <gds> "а ватсон без трубки уже не может"
[22:52:59] <gds> про именованные аргументы -- выработал относительно-годную политику их использования.  1. в локальных функциях, если больше одного аргумента -- без разбора можно.  2. в функциях апи -- если в теории можно перепутать аргументы -- то надо.  пример -- String.blit.  3. остальное -- думать головой и не выключать предупреждения компилятора.  Такая вот политика.  Вроде работает.  Особенно хорошо помогает, если трахаешься с типизацией кода, использующего открытые типы.
[22:58:22] <gds> а, ещё к п.2 -- если можно перепутать, но в своём коде не путаются они ну просто никак -- можно и без именованных.  Именованные -- они же для людей, поэтому потестить их стоит сначала на себе.
[23:10:41] <gds> Kakadu: https://github.com/Kakadu/lablqt/issues/7 -- это прикол такой?  Я в электрическом почтамте получил весточку.  По-моему, процитированное там таки нездорово.
[23:20:04] <Kakadu> gds: я так понял то, что хочет от меня ermine
[23:26:42] <gds> Kakadu: сейчас я никому не психоаналитик, мой моск будет доступен где-то через половину суток, наверняка не ранее.  в том числе потому, что я наконец дорвался до своей клёвой штуки для literate programming!122344
[23:28:19] ygrek вышел(а) из комнаты
[23:38:52] <Typhon> круто!
[23:39:23] <Typhon> кстати, пользуясь случаем -- wunderlist хороший сервис/программа для простого todo -- работает везде (венда, мак, линупс, андроед, ипад, вебсайт)
[23:59:24] zert вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!