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

GMT+4
[00:01:44] Ordeit вошёл(а) в комнату
[00:08:11] Ordeit вышел(а) из комнаты: Я использую Miranda Me (http://miranda-me.ru/)
[00:12:38] Kakadu вышел(а) из комнаты: Replaced by new connection
[00:12:39] Kakadu вошёл(а) в комнату
[01:18:37] bobry вышел(а) из комнаты
[01:28:33] Kakadu вышел(а) из комнаты
[01:40:26] f[x] вышел(а) из комнаты
[05:46:29] letrec вошёл(а) в комнату
[07:01:55] Sun][ вошёл(а) в комнату
[07:09:54] letrec вышел(а) из комнаты
[07:15:54] letrec вошёл(а) в комнату
[07:46:54] Sun][ вышел(а) из комнаты
[09:21:33] bobry вошёл(а) в комнату
[09:38:09] tilarids вошёл(а) в комнату
[09:50:41] bobry вышел(а) из комнаты
[10:11:17] ftrvxmtrx вышел(а) из комнаты
[10:19:24] klapaucius вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[10:19:26] klapaucius вошёл(а) в комнату
[10:25:11] Typhon вошёл(а) в комнату
[10:41:46] ermine вошёл(а) в комнату
[10:58:20] ermine вышел(а) из комнаты
[11:03:13] Kakadu вошёл(а) в комнату
[11:24:12] ftrvxmtrx вошёл(а) в комнату
[11:27:56] letrec вышел(а) из комнаты
[11:32:10] tilarids вышел(а) из комнаты: Computer went to sleep
[11:45:46] <f[x]> gds: лучше перебдеть!
[12:10:19] tilarids вошёл(а) в комнату
[12:11:44] tilarids вышел(а) из комнаты
[13:28:22] akovbovich вошёл(а) в комнату
[13:31:02] tilarids вошёл(а) в комнату
[13:46:04] komar вышел(а) из комнаты
[13:47:32] komar вошёл(а) в комнату
[14:01:46] letrec вошёл(а) в комнату
[14:52:43] ermine вошёл(а) в комнату
[16:36:53] <gds> чото нихрена не понимаю.  Есть _oasis, в нём BuildDepends : mypkg, проект стандартный, oasis quickstart + oasis setup.  Но mypkg не подключается.  В выводе компиляции вообще прямой запуск ocamlc.opt, вместо запуска через ocamlfind.  Как вообще должно быть?  Забыл я уже эти вещи.
[16:46:15] <f[x]> moar nfo n33d3d
[16:46:32] <f[x]> oasis свежий?
[16:47:05] <f[x]> как билдишь?
[16:48:12] <gds> f[x]: оазис -- более-менее свежий, раньше генерило опции -package (а вот ocamlfind'а, посмотрел, не было в выводе компиляции).  билдю по make all, Makefile сгенерён оазисом.
[16:48:41] <f[x]> ocamlfind всегда вызывался
[16:48:50] <gds> ан нет, вызывается на соседнем проекте.
[16:49:28] <gds> да, а тут не вызывается.  Подиффать, что ли, {setup,myocamlbuild}.ml?
[16:49:47] <f[x]> сделай distclean и ocaml setup.ml -build
[16:51:46] <gds> f[x]: -build только после -configure получилось.  Сделал, та же ситуация.
[16:51:59] <gds> вообще, куда проще покопать?
[16:54:48] <f[x]> grep ocamlopt myocamlbuild
[16:55:44] <gds> Options.ocamlopt   := ocamlfind & A"ocamlopt";
[16:56:47] <gds> странное дело.  Может попробовать переустановить линукс?
[16:57:14] <f[x]> есть подозрение что вызывается что-то не то
[16:57:32] <f[x]> setup точно обновил?
[16:58:08] <f[x]> а configure пытается mypkg искать?
[16:58:32] <f[x]> grep mypkg setup.data
[16:59:38] <f[x]> я quickstart не использую - копирую с другого проекта и правлю, может там косяк какой-то?
[16:59:50] <f[x]> покажи _oasis если не сильно секретный
[16:59:51] <gds> пока попробовал ocaml setup.ml -build -verbose 10, "ocamlfind" отсутствует в выводе.
[17:02:05] <f[x]> если нет ошибок то там же вообще никакого вывода нет по дефолту?
[17:02:25] <gds> сравнил _oasis с тем, что работает -- разницы нет, разве что в текстовых полях.  мало смысла показывать.
grep .. setup.data даёт mypkg = "путь" (правильный)
./configure ищет -- последней строкой даёт pkg_mypkg: ... путь (тоже правильный)
[17:02:54] <f[x]> ну тогда grep mypkg _build/_log :)
[17:04:16] <f[x]> смайлик в баш печатать не надо!
[17:04:29] <f[x]> он шуток не понимает
[17:10:32] <gds> f[x]: http://paste.in.ua/4407/ на том файле, где должно было быть -package cadastr
[17:11:46] <f[x]> > /home/gds/dev/ovm/ocaml/bin/ocamlc.opt
[17:11:59] <f[x]> ты точно нигде компилеры не override'ишь?
[17:12:07] <f[x]> grep ocamlc myocamlbuild.ml?
[17:12:13] <f[x]> wtf какой-то
[17:13:33] <gds> сцуко...  нашёл.  в myocamlbuild.ml дописал http://paste.in.ua/4408/ , но думал, что это ок.  закомментил, ocamlfind подставляется.  получается, надо по-другому это говно запускать?
[17:13:55] <f[x]> дык
[17:14:06] <f[x]> надо подцепляться к oasis'овскому
[17:14:21] <gds> говно кококое.
[17:14:53] <gds> понял идею, ща попробую.
[17:15:06] <f[x]> а почему в preconf не вынести этот extract?
[17:16:22] <f[x]> gds: http://git.ocamlcore.org/cgi-bin/gitweb.cgi?p=extunix/extunix.git;a=blob;f=myocamlbuild.ml;h=ae3d8d459a6e35d70900b7fb7d8a0815e96321d8;hb=HEAD#l584
[17:17:08] <gds> про preconf не знаю, наколхозил так:
Ocamlbuild_plugin.dispatch (fun x -> (coq_dispatch x; dispatch_default x))
покатит?
[17:17:09] <f[x]> а, и там тоже не круто
[17:17:42] <f[x]> хм, там зачем-то dispatch_combine есть, я его сипользовал
[17:18:05] <f[x]> лучше сделай в _oasis:
PostConfCommand: ./coq_support.sh extract
[17:19:53] <gds> мне надо extract делать перед билдом, а не после configure, вот в чём дело.  Т.е. поменял я в coq-исходниках что -- перед билдом экстрактить надо.  Тут же не получится, правильно я понимаю?
[17:20:49] <f[x]> значит PreBuild :)
[17:21:17] <f[x]> а если не поменял - оно ж всё равно экстрактится?
[17:22:37] Kakadu вышел(а) из комнаты
[17:22:40] <gds> если не поменял -- я там, опять же, наколхозил подсчёт md5sum от *.v, не экстрактится.
Во, PreBuildCommand -- то, что нужно.
В целом, благодарю за помощь.  В жизни бы не догадался, что ocamlbuild туповат в плане dispatch.
[17:22:52] <gds> и да, PreBuild -- почище, чем dispatch.
[17:23:50] komar вышел(а) из комнаты: Replaced by new connection
[17:23:51] komar вошёл(а) в комнату
[17:25:24] Kakadu вошёл(а) в комнату
[17:27:40] letrec вышел(а) из комнаты
[17:28:00] letrec вошёл(а) в комнату
[17:32:32] <gds> PreBuild даже фейлит сборку при ненулевом завершении команды.  невероятно.
[17:36:55] <gds> в todo у меня -- показать, что "высокие технологии" не нужны.  ocamlbuild plugin "не пишется", в рассылке объяснили, почему именно, в результате -- шелл-скрипт.  с трансформерами coq не умеет нормально (что-то не ок у него в попытках резолвить инстансы тайпклассов), в результате -- чисто окамловская "world monad" с рефами, массивами, исключениями и Obj.
[18:08:20] <f[x]> китайцы добрались до camlp4 - ховайся
[18:09:29] Vinzent вошёл(а) в комнату
[18:38:18] Sun][ вошёл(а) в комнату
[19:00:27] Vinzent вышел(а) из комнаты
[19:10:22] ftrvxmtrx вышел(а) из комнаты
[19:40:32] tilarids вышел(а) из комнаты: Computer went to sleep
[19:43:00] Typhon вышел(а) из комнаты
[20:08:50] Vinzent вошёл(а) в комнату
[20:22:52] tilarids вошёл(а) в комнату
[20:25:02] bobry вошёл(а) в комнату
[20:33:06] <bobry> Kakadu: знаешь такого товарища? http://mit.spbau.ru/~bulychev/
[20:33:32] <bobry> будет на камло учить народ летом
[20:33:36] <bobry> в АУ
[20:33:53] <Kakadu> Дмитрий Булычев?
[20:34:02] <Kakadu> он самый
[20:34:18] <Kakadu> Приготовься что тебе его речь будет сложно понимать вначале
[20:34:23] <Kakadu> могу видео скинуть
[20:34:26] <bobry> да меня он пока учить не будет
[20:34:28] <bobry> это кто вообще?
[20:34:37] <Kakadu> остап
[20:34:51] <bobry> шо?
[20:35:04] <Kakadu> Ну с матмеха
[20:35:14] <bobry> так я никого не знаю на вашем матмехе
[20:35:16] <bobry> чем знаменит та?
[20:35:26] <bobry> в плане камло особенно
[20:35:36] <Kakadu> Ну он хоть кто-то кто функциональщиной занимается
[20:35:45] <Kakadu> только он больше теоретик
[20:36:07] <Kakadu> очень конбенаторы любит
[20:37:54] <bobry> ну-ну
[20:38:18] <Kakadu> Он вроде по этому программе на 5 куре семиинары вёл
[20:38:22] <Kakadu> по этой*
[20:39:25] <Kakadu> Последние вопросы про его решетке это вообще жесть дикая
[20:39:35] <Kakadu> решетки*
[21:26:54] letrec вышел(а) из комнаты
[21:32:15] ludovik вошёл(а) в комнату
[21:54:32] f[x] вошёл(а) в комнату
[22:00:20] Vinzent вышел(а) из комнаты
[22:01:11] Vinzent вошёл(а) в комнату
[22:25:47] komar вышел(а) из комнаты
[22:26:05] komar вошёл(а) в комнату
[22:28:05] Vinzent вышел(а) из комнаты
[23:09:27] Sun][ вышел(а) из комнаты
[23:21:16] ftrvxmtrx вошёл(а) в комнату
[23:43:20] <ermine> хех, в ocsigen ml написали, что код, использующий Obj.magic, будет переписан на gadt как только решат юзать четветрое камло
[23:46:59] <gds> дебилы.  gadt'ы доступны уже стопиццот лет.
А у меня пичалька с Obj -- не всякий код можно переписать на gadt'ы.
[23:47:26] Kakadu до сих пор не знает что это такое
[23:47:38] <gds> Kakadu: ну ты хоть этим не гордишься?
[23:47:44] <Kakadu> gds: про кого ты там анекдот рассказывал?
[23:47:47] <gds> дада
[23:48:29] <gds> ну представь параметризованный индуктивный тип данных, где какие-то варианты предполагают ограничение на тип результата.  Вот это и есть gadt.
[23:49:25] <Kakadu> непонятно что такое тип результата
[23:50:51] <ermine> последний ->
[23:50:52] <gds> type t 'a = [ Int of int | Bool of bool ].  Вот, в простом случае оба варианта имеют тип t 'a.  Да даже можно убрать это 'a, чтобы не мешало.  Тут понятно?
[23:51:06] <Kakadu> да
[23:52:07] <gds> ну и вот, gadt'ы (в любом из их исполнений) гарантируют, что если есть выражение x = Int y, то x имеет тип t int.  А если x = Bool z, то x имеет тип t bool.  Вот и всё.
[23:53:09] <Kakadu> т.е. функция начинает возвращать неожиданно t bool вместо t?
[23:53:50] <Kakadu> let f : 'a. 'a -> t bool = fun _ -> Bool true ;;
[23:54:30] <Kakadu> пока напоминает полиморфные варианты
[23:54:39] <gds> t bool вместо t 'a.  И не функция, а конструктор.  Если бы функция, то можно было бы ограничить:
value make_bool (b : bool) : t bool = Bool b;
[23:55:06] <gds> полиморфные тут рядом не сидели.
[23:56:04] <Kakadu> почему же?
type t = [ `Int of int  | `Bool of bool ];;
let f b : `Bool bool = `Bool b
;;
[23:56:12] <gds> тут, как бы, протаскивание/гарания типа t 'a (т.е. ограничение на 'a) в зависимости от того, какой конструктор используется.
[23:57:31] <gds> твой пример делается и на обычных sum types.  Если же захочешь, чтобы камло тайпчекало твои t, то, очевидно, добавишь параметр к типу.  Чтобы
value and : t bool -> t bool -> t bool;
value plus : t int -> t int -> t int;
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!