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

GMT+3
[00:37:33] gds вышел(а) из комнаты
[00:39:11] shaggie вышел(а) из комнаты
[01:42:37] schurshik вошёл(а) в комнату
[01:43:58] schurshik вышел(а) из комнаты: qutIM : Jabber plugin
[03:43:04] ftrvxmtrx вошёл(а) в комнату
[03:46:11] ftrvxmtrx вышел(а) из комнаты
[09:12:44] gds вошёл(а) в комнату
[09:22:27] Kakadu вошёл(а) в комнату
[11:25:22] arhibot вошёл(а) в комнату
[11:28:43] <f[x]> о, merge это в принципе неплохо
[11:29:22] <gds> только выделение памяти неплохое такое будет.
[11:31:33] arhibot вышел(а) из комнаты
[11:31:38] <f[x]> ничего
[11:31:55] <f[x]> пора наверное переползать на 3.12, тем более что 3.12.1 наконец в дебиан залили
[11:45:35] arhibot вошёл(а) в комнату
[11:59:29] <Kakadu> пойду атаковать кутишников из ирки вопросами  С++
[12:00:33] ermine вошёл(а) в комнату
[12:01:51] arhibot вышел(а) из комнаты
[12:07:51] <Kakadu> я тут немного посмотрел на QtQuick
[12:08:06] <Kakadu> вроде писать к нему байндинги не круто
[12:08:17] <Kakadu> там скорее из плюсов надо вызывать камло
[12:19:20] <gds> то есть, делать callback'и в окамловский код?
[12:23:03] <Kakadu> да
[12:28:26] komar вошёл(а) в комнату
[12:44:09] <gds> Kakadu: это разве плохо?
[13:03:14] shaggie вошёл(а) в комнату
[13:16:13] <Kakadu> gds: хз
[13:16:21] gene9 вошёл(а) в комнату
[13:17:12] <gds> плохо тем, что event loop будет в qt.  а так -- вроде остальное лично меня устроило бы.
[13:18:44] <Kakadu> а нужно ли lablqt тогда?
[13:19:12] <f[x]> это норм для gui
[13:21:41] <gds> нормально/приемлемо для большинства гуи-программ и гуи-тулкитов, скажем так.
[13:46:52] <gds> думаю сделать скриптик, который принимает имя диры, создаёт её и кидает "шаблонное содержимое" (все .hgignore, _oasis, main.ml) и прочее.  А то топлевел -- тупой, а каждый раз для мелких экспериментов создавать всё это -- гемор.  Ну и можно было бы пару шаблонов предусмотреть (original/revised syntax или типа того).  Или проще делается?
[13:50:48] <f[x]> template project - ок
[13:55:12] <gds> а то и в глобальную репку запилить можно, думается.
[13:55:31] <gds> кстати, чисто по приколу можно даже не на баше з..башить.
[14:00:56] gene9 вышел(а) из комнаты
[14:24:06] <gds> во, чо я забыл -- давайте имя для этого проекта.  ocaml-project-templates?  хз хз.  и бегом давайте!  директорию/репку надо создавать.
[14:59:28] <gds> камло не может найти X.h при ./configure.  чего там надо в дебианах/убунтах ставить?
[15:02:43] <f[x]> чего??
[15:02:47] <f[x]> полный текст покажи?
[15:02:57] <f[x]> а разве такой проект уже есть?
[15:04:15] <gds> не, видимо оно добавочные .a и прочие не может найти.  ковыряю дальше.
[15:10:59] <gds> ls /usr/lib/libX11.* не выдаёт ничего.
а, хитро, "/usr/lib32/libX11.so".  но почему, казалось бы.  (система 64битная)
[15:14:59] <f[x]> сделай просто apt-get build-dep
[15:17:28] <gds> для какого пакета?  оверблд компиляю :)
впрочем, как грязный хак -- добавил /usr/lib32 в список мест поиска после lib64 и lib.  вон, нашло ок.
[15:17:52] <f[x]> для камля
[15:18:42] <gds> о, кстати, чтобы путаницы не было, apt-get purge ocaml сделаю.
[15:21:09] <gds> в общем, думается мне, 64битные платформы какого-то хрена используют lib32 под 32битные библиотеки.  странно это, почему в убунте не собрали 64битные иксы.
[15:22:07] <f[x]> ответ: в убунте
[15:22:20] <gds> ок!
[15:22:35] <f[x]> вообщем жесть конечно
[15:23:00] <gds> угу, но оверблд тут показал себя хорошо -- лёгкий патч без необходимости долго разбираться.
[15:23:38] gds вышел(а) из комнаты
[15:28:34] shaggie вышел(а) из комнаты
[17:00:38] gds вошёл(а) в комнату
[17:30:25] <f[x]> кстати, я говорил уже - делайте всегда make test обязательным пререквизитом для make deploy...
[17:30:44] <f[x]> второй раз залил багу которая ловилась юниттестами
[17:34:49] komar вышел(а) из комнаты: Replaced by new connection
[17:34:50] komar вошёл(а) в комнату
[17:35:30] <gds> не говорил.  однако, у меня в качестве компиляции в емаксе обычно что-то типа make test, поэтому перед коммитом смотрю именно на него.
[17:36:03] <f[x]> радикально
[17:36:18] <gds> тесты обычно несложные-недолгие.
[17:36:37] <f[x]> ну пару секунд - уже раздражает при простых правках
[17:37:00] <gds> делай более сложные правки! :]
[17:37:45] <gds> хотя, если несколько правок сливать в одну -- это потеря контекста/внимания.
[17:47:32] <gds> кстати, я понял, почему тесты меня не раздражают, даже если долгие -- потому что в емаксе есть опция "следить за окном компиляции", и, если я вижу, что тесты как факт начались, значит всё как минимум скомпилировалось, можно править дальше.
[17:48:33] f[x] испытывает vimhurt
[17:50:23] <gds> охблин.  а там такой опции точно нет?  а само окно есть?  может дописать, если там просто?
[17:53:44] <f[x]> оно когда компилирует не даёт редактировать
[17:53:49] <f[x]> может и настраивается
[17:54:02] <f[x]> но я эти настройки уже года два не трогал и не собираюсь :)
[17:54:28] <f[x]> опять-таки, а в чате когда трепаться если редактировать во время компиляции?
[17:55:10] <gds> о блин.  надо будет заценить вим.
[17:56:03] <gds> кстати, можешь описать вкратце, как там добавочную функциональность лепят?  в емаксе, понятно, елисп, та ещё срань.
[17:58:01] <f[x]> петон!!
[17:58:27] <f[x]> либо для олдфагов - vimscript, думаю достойный соперник elisp :)
[17:58:47] <f[x]> по идее там какое-то апи есть - наверное можно и камлевый интерфейс прикрутить :))
[18:01:11] <gds> петон менее говнист, чем елисп.  Значит, жить можно.
[18:02:00] f[x] дебажится :
module String=struct include String let sub s a b = try sub s a b with exn -> log #warn ~exn "%S %d %d" s a b; assert false end

[18:03:28] <gds> грамотно.
[18:03:53] <f[x]> хочу макрос который будет делать это вместо меня!
[18:03:57] <f[x]> обсуждали уже это
[18:13:11] <gds> макроса не обещаю, а вот что-то типа
let sub = log_exn3 "String.sub" String.sub tstring tint tint
-- вроде вполне.  как допилю этот кусок кадастра.
[18:16:18] <f[x]> даже не макрос, а фильтр который все топлевел функции в модуле так аннотирует
[18:21:39] <gds> в последнее время подобные мысли идут в сторону "делать для людей, а не для препроцессора".  так универсальнее получается.
[18:24:40] <gds> ещё вопрос "на подумать": как будем аннотировать
Option.get_exn : option 'a -> 'a
?  у меня есть решение, но интересны мнения.
[18:31:29] <f[x]> не понял, точно так же всё?
[18:31:42] <f[x]> а, понял
[18:31:51] <f[x]> а, ну и что?
[18:32:27] <f[x]> let get_exn x = try get_exn x with exn -> log #warn ~exn "get_exn %s" (show x); raise exn
[18:32:37] <f[x]> т.е. exn во всех случаях пробрасывается
[18:32:57] <f[x]> ну и можно смотреть на суффикс - exn - что это нормальная ситуация, и не враппить
[18:33:14] <f[x]> либо ввести список исключений которые врапперы должны сообщать
[18:33:20] <f[x]> во, это наверное лучше всего
[18:33:28] f[x] <- теоретик
[18:40:48] <gds> я там недоформулировал.
суть в том, что 'a отобразить не можем, так как show неоткуда будет взять отображающую функцию.
как вариант -- добавляю аргумент ?(ti_a = t_no), и потом show ti_a x, где x:'a, и t_no по умолчанию показывает значение с типом 'a в виде "<abstract>".  Типа, "если передашь -- посмотришь".
как другой вариант, который мне сильно меньше нравится -- носить значения в type v 'a = { v : 'a ; typeinfo : ti 'a } каком-нибудь.  Но боксинг ональный будет, да и лишние движения на уровне пользователя.  То есть, пока разделил значения и рантайм-информацию о типах.
[18:41:34] <f[x]> это ты глобально проблему решаешь, а я имею ввиду быстрый хак для дебага, и только
[18:41:34] <gds> > t_no по умолчанию показывает значение с типом 'a в виде "<abstract>".  Типа, "если передашь -- посмотришь".
* Типа, "если передашь ~t_a -- посмотришь".
[18:42:02] <gds> а, понял твою идею.
[18:42:31] <f[x]> show - как-то угадывает по каким-то соглашениям - типа если в модуле есть тип t и хотим показать первый аргумент функции то юзаем show из текущего молуля итп либо std.dump
[20:34:24] shaggie вошёл(а) в комнату
[21:21:11] <gds> f[x]: угадывать по соглашениями vs Std.dump -- это уже статика, так?  А мне, как оказалось, нужны и "динамические" фишки, даже в стиле "если не предоставили функцию -- ничего не выводим / валимся".  В общем, разные задачи, как оказалось.
[22:02:52] ermine вышел(а) из комнаты
[23:21:28] ygrek вошёл(а) в комнату
[23:45:16] gds вышел(а) из комнаты
[23:59:34] Kakadu вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!