Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 28 июня 2010< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:30:24] <ygrek> > желание иногда использовать сайд-эффекты без излишнего монадизма
[01:12:53] digital_curse вышел(а) из комнаты
[01:31:55] ermine вышел(а) из комнаты
[01:36:51] ygrek вышел(а) из комнаты
[01:54:05] Kakadu вышел(а) из комнаты
[03:03:29] cf-ins вышел(а) из комнаты
[06:08:35] gds вышел(а) из комнаты: Replaced by new connection
[06:08:36] gds вошёл(а) в комнату
[08:00:54] gds вышел(а) из комнаты
[08:02:12] iNode вышел(а) из комнаты
[08:21:17] iNode вошёл(а) в комнату
[08:58:42] gds вошёл(а) в комнату
[09:36:09] zert вошёл(а) в комнату
[09:36:15] <zert> здрасте
[09:36:36] <zert> оцамл ещё не умер?
[09:36:57] <gds> вже сдох.
[09:37:40] <gds> кстате, статью в пфп читал, понравилось.
[09:38:02] <zert> про окамл?
[09:39:58] <gds> нет же, про ырланк.
[09:40:23] <zert> а, мою что ли?
[09:40:53] <gds> ога.
[09:40:59] <zert> спасибо :)
[09:41:17] <gds> АФФТАР ПЕШЫ ИСЧО!111111адинадинадинадцат
[09:41:46] <zert> :)))
[09:41:56] zert пишет ебилд для батареек
[09:43:54] <gds> я даже в говновендузятную сборку к себе утащил боторейки, всё должно получиться легко под линупсами.  Хотя вот само слово "ебилд" своим трёхбуквенным префиксом кагбэ намекает на непростые процессы.
[09:44:41] <zert> не
[09:44:45] <zert> там простые процессы
[09:44:53] <zert> вот мейкфайл в батарейках непростой
[09:44:57] <zert> патчить пришлось
[09:45:06] <zert> ocamlfind не розумел DESTDIR
[09:48:15] serp256 вошёл(а) в комнату
[09:50:02] <gds> посмотрел у себя.  я-то его ставлю с опциями по умолчанию.  в $OCAMLLIB/site-lib создаёт batteries.  Конечно, если надо другое, надо патчить.
[09:50:38] <zert> ну ты-то его руками ставишь?
[09:50:58] <zert> а ебилды ставят сначала в образ, в отдельную директорию
[09:51:04] <zert> потом оно на систему накатывается
[09:51:10] <gds> omake all && omake test && omake install  -- вот весь скрипт.
[09:51:21] <zert> ну это если сразу на живую систему ставить
[09:51:23] <gds> про директорию понял.  тогда да.
[09:51:36] <zert> но поставилось уже
[09:51:43] <zert> щас документацию дипинываю
[09:51:54] vshender вошёл(а) в комнату
[09:51:56] <zert> чтобы install-doc тоже правильно делался
[09:53:04] <zert> и да, сейчас там не omake
[09:53:07] <zert> в 1.2.2
[09:53:11] <zert> это раньше было omake
[09:54:33] <gds> молодцы ребяты.  буду обновлять, значит.
[10:03:59] <zert> всё, дописал, роботає
[10:17:36] Typhon вошёл(а) в комнату
[10:20:02] ʇsʎɯ вошёл(а) в комнату
[10:22:28] ygrek вошёл(а) в комнату
[10:47:35] ermine вошёл(а) в комнату
[11:07:51] <ygrek> zert: ocamlfind читает переменную окружения OCAMLFIND_DESTDIR
[11:07:58] <ygrek> man findlib.conf
[11:12:50] <zert> а, т.е. можно без патча?
[11:12:55] <zert> спасибо, ща проверю
[11:16:00] <ygrek> угу
[11:17:36] <zert> о, работає
[11:17:38] <zert> данкешонг
[11:18:06] cf-ins вошёл(а) в комнату
[11:19:04] <zert> а чего он сам путь не создаёт?
[11:19:10] <zert> валится, если директории нема
[11:21:18] <gds> http://pastebin.com/wa7bGRA0 -- вполне ожидаемо, но неприятно.  А в случае, когда my_val будет boxed (float например), так вообще падучая настигает этот код.
Значит, десериализация опасна не только из-за несоответствия типов, но и из-за несоответствия времени десериализации относительно времени инициализации top-level module values.
[11:24:54] <ygrek> zert: ну звыняй :)
[11:25:28] <zert> ок
[11:27:22] <ygrek> gds: marshaling closures is kinda of a hack anyway
[11:27:44] <gds> ага, но ведь клёвый хак :)
[11:31:46] <gds> с другой стороны, всякие там эрланги умеют передавать код на удалённые узлы, если я правильно помню.  Им "нургалиев разрешил" :]
[11:32:32] <ʇsʎɯ> это даже (простигоспади) питон умеет
[11:32:34] <zert> :)
[11:33:02] <zert> так то ерланги
[11:33:40] <gds> ну да, и всякие лиспы тоже умеют (у них это естественным образом получается).
Так вот же, меня волнует только одно: доколе?
[11:34:15] <vshender> gds: была чья-то дипломная работа в СПбГУ по поводу генерирования кода для виртуальной машины камла в рантайме
[11:34:45] <vshender> Да и вообще можно передать, скомпилить в виде шаред-библиотеки и в рантайме подключить. Можно такую библиотечку наваять.
[11:36:15] <zert> поправил ебилд
[11:36:35] <zert> тащемта если кому-то надо: layman --overlays=http://github.com/Zert/zert-portage/raw/master/layman-list.xml -a zert
[11:36:41] <zert> emerge batteries
[11:37:58] <gds> vshender: это если честно делать, то да.  Даже если просто компилировать в байткод, который передавать.  Пахнет метаокамлом и delimcc, там они делают похожие вещи.  Однако слегка тяжеловесно для моей тупой задачки.
[11:38:41] <zert> в той нише, на которую оцамл годен, не нужна передача кода на расстояния
[11:39:24] <gds> учитывая, что у окамла плохо с многоядерностью, передача кода нужна даже в пределах хоста.
[11:42:26] <ygrek> можно вообще топлевел собирать и кормить ему строки :)
[11:43:00] <gds> гыгы, некоторые так и делают :)
[11:49:42] <gds> наверное в моём случае будут просто <library> usage guide с рекомендациями о том, что 1. если нужны общие структуры данных для всех экземпляров, то их надо линковать до библиотеки, 2. если параллелите код, использующий какие-либо top-level values, они обязаны линковаться до библиотеки, 3. если используете структуры данных, нужные только хозяину (но не рабам), то они обязаны линковаться после библиотеки (которая будет в случае раба перехватывать управление на себя при инициализации top-level values какого-то её модуля).
Но вот порядок линковки -- мутная штука.  Учитывая разные камлобилды, так и вообще непредсказуемая.
Статически гарантировать порядок линковки относительно библиотеки -- не знаю, как.  Если бы просто гарантировать порядок между двумя пользовательскими модулями -- известно, ссылка на значение.
[11:54:05] <ygrek> не могу найти но помню где-то видел на камле загрузку и dynlink плагинов-cmo по сети
[12:50:54] iNode вышел(а) из комнаты
[12:50:59] iNode вошёл(а) в комнату
[13:13:53] komar вышел(а) из комнаты
[13:23:44] komar вошёл(а) в комнату
[14:36:56] vshender вышел(а) из комнаты
[14:47:28] vshender вошёл(а) в комнату
[15:42:07] cf-ins вышел(а) из комнаты
[16:23:38] <gds> есть ли какие-нибудь прямые/непосредственные способы указать камлобилду, чтобы модуль1 линковался строго позднее модуля2?  Ну или что-то подобное.
А то ведь в модулях сайд-эффекты, и контроль за их порядком в общем случае нужен.
[16:32:14] <komar> Переставить местами?
[16:32:28] <komar> Окамлобилдом не пользуюсь, но окамлофайнду вроде помогало.
[16:34:42] <ygrek> порядок cma будет строго определён порядком ocaml_lib в плагине
[16:39:36] <gds> komar: в том-то и дело, что камлобилд сам определяет зависимости, ему указываешь только цель, которую надо построить.
[16:39:43] <gds> ygrek: а как с .cmo быть?
[16:45:28] <ygrek> внешние cmo?
[16:45:33] <ygrek>      flag ["link"; "ocaml"; "use_netstring"; "thread"; "byte"] (S[A"netstring_mt.cmo"]);
     flag ["link"; "ocaml"; "use_netstring"; "thread"; "native"] (S[A"netstring_mt.cmx"]);
     flag ["link"; "ocaml"; "use_equeue"; "thread"; "byte"] (S[A"unixqueue_mt.cmo"]);
     flag ["link"; "ocaml"; "use_equeue"; "thread"; "native"] (S[A"unixqueue_mt.cmx"]);
[16:45:47] <ygrek> ocaml_lib это обёртка над flag
[16:46:02] <ygrek> т.е. тоже по порядку
[16:46:39] <ygrek> по хорошему эта вся инфа берётся из ocamlfind - дефолтный камлобилд плагин в новом камле так и делает по моему
[16:48:40] <gds> то есть, если я сделаю flag <1>; flag <2>;, то сначала будет браться тот .cmo, который я указал в <1>, затем который в <2>?  (при условии, конечно, что оба правила будут учитываться)
[16:48:52] <ygrek> угу
[16:50:22] <gds> круто.  Но это если внешние .cmo.  А если есть пачка a.ml, b.ml, c.ml, и я хочу, чтобы они линковались строго в порядке a.cmo b.cmo c.cmo (и выдавало ошибку, если по зависимостям так не получается)?
[16:51:22] <ygrek> можно наверное явно указать зависимость но я так не пробовал
[16:51:31] <ygrek> см. dep
[16:54:00] <gds> ага, идею понял.  Но страшно..
[16:58:50] <ygrek> что-то не работает
[17:03:16] <ygrek> вот так :
open Ocamlbuild_plugin
;;
dispatch begin function
| After_rules ->
    dep ["file:c.ml"] ["b.cmx"];
    dep ["file:b.ml"] ["a.cmx"];
| _ -> ()
end
[17:03:45] <ygrek> наверное лучше cmo вместо cmx
[17:04:59] <gds> так работает?  если уже налепил тестовые файлы, можешь проверить одну штуковину?  Интересно, что будет, если a.ml будет ссылаться на какое-то из значений, определённых в b.ml.  Если не влом.
[17:05:40] <ygrek> Circular build detected
  (a.cmi already seen in [ a.cmx; b.ml.depends; b.cmi; a.cmi; q.cmi; q.cmx;
                           q.native ])
[17:06:07] <ygrek> убираю "плохой" dep - всё ок
[17:06:13] <gds> шикарно, то что надо :)  Благодарю за помощь, код беру в дело.
[17:30:20] gds вышел(а) из комнаты
[17:47:01] iNode вышел(а) из комнаты
[17:54:01] serp256 вышел(а) из комнаты
[18:11:46] gds вошёл(а) в комнату
[18:19:34] iNode вошёл(а) в комнату
[18:57:35] ʇsʎɯ вышел(а) из комнаты
[18:59:51] Typhon вышел(а) из комнаты
[20:04:44] cf-ins вошёл(а) в комнату
[20:07:34] Kakadu вошёл(а) в комнату
[20:17:38] cf-ins вышел(а) из комнаты
[20:30:34] Typhon вошёл(а) в комнату
[21:15:31] gds вышел(а) из комнаты
[21:15:57] gds вошёл(а) в комнату
[21:26:55] <Typhon> http://www.slideshare.net/j2a/ss-4625844  -- смотрели ужо?
[21:27:05] <zert> да
[21:31:21] <ygrek> ы, с каких это пор выкладывать слайды на какую-то флэш-вебдванольную-требующую-регистрацию помойку стало проще чем обычной pdf-кой?
ненавижу
[21:31:32] <ygrek> хотя эти я уже видел
[21:32:42] <Typhon> там голос еще
[21:32:47] <Typhon> пдфка отдельная тож есть
[21:33:29] <Typhon> да, то что регистрацию требуют для даунлоада пдфки -- моветон. регистрация в 21 веке должна сдохнуть
[22:17:13] Kakadu вышел(а) из комнаты
[23:36:54] ygrek вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!