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

GMT+4
[00:27:23] Typhon вышел(а) из комнаты
[00:28:49] Typhon вошёл(а) в комнату
[00:31:18] komar вышел(а) из комнаты: Replaced by new connection
[00:31:18] komar вошёл(а) в комнату
[00:49:17] Typhon вышел(а) из комнаты
[00:49:54] Typhon вошёл(а) в комнату
[00:53:46] Typhon вышел(а) из комнаты: Replaced by new connection
[00:54:13] Typhon вошёл(а) в комнату
[01:02:38] bobry вышел(а) из комнаты
[01:11:30] klapaucius вышел(а) из комнаты
[01:25:52] ftrvxmtrx вышел(а) из комнаты
[01:29:24] ftrvxmtrx вошёл(а) в комнату
[01:42:31] Kakadu вышел(а) из комнаты
[01:55:38] ygrek вышел(а) из комнаты
[02:45:55] ftrvxmtrx вышел(а) из комнаты
[02:46:40] ftrvxmtrx вошёл(а) в комнату
[03:00:42] Typhon вышел(а) из комнаты
[03:47:30] letrec вошёл(а) в комнату
[04:53:29] letrec вышел(а) из комнаты
[06:58:57] ftrvxmtrx вышел(а) из комнаты
[07:00:22] ftrvxmtrx вошёл(а) в комнату
[09:48:33] superbobry вошёл(а) в комнату
[10:17:31] ftrvxmtrx вышел(а) из комнаты
[10:18:38] ftrvxmtrx вошёл(а) в комнату
[10:36:23] Kakadu вошёл(а) в комнату
[10:48:23] ftrvxmtrx вышел(а) из комнаты
[10:48:48] ftrvxmtrx вошёл(а) в комнату
[10:52:35] ermine вошёл(а) в комнату
[10:58:25] ftrvxmtrx вышел(а) из комнаты
[10:59:06] ftrvxmtrx вошёл(а) в комнату
[11:00:16] ftrvxmtrx вышел(а) из комнаты
[11:01:08] ftrvxmtrx вошёл(а) в комнату
[11:16:30] ftrvxmtrx вышел(а) из комнаты
[11:16:56] ftrvxmtrx вошёл(а) в комнату
[11:18:24] ftrvxmtrx вышел(а) из комнаты
[11:21:06] ftrvxmtrx вошёл(а) в комнату
[11:22:16] ftrvxmtrx вышел(а) из комнаты
[11:22:48] ftrvxmtrx вошёл(а) в комнату
[11:24:24] ftrvxmtrx вышел(а) из комнаты
[11:25:22] ftrvxmtrx вошёл(а) в комнату
[11:28:30] ftrvxmtrx вышел(а) из комнаты
[11:29:12] ftrvxmtrx вошёл(а) в комнату
[11:32:53] ftrvxmtrx вышел(а) из комнаты
[11:35:11] ftrvxmtrx вошёл(а) в комнату
[11:35:16] ftrvxmtrx вошёл(а) в комнату
[11:36:38] ftrvxmtrx вышел(а) из комнаты
[11:37:32] ftrvxmtrx вошёл(а) в комнату
[11:38:14] ftrvxmtrx вышел(а) из комнаты
[11:39:07] ftrvxmtrx вышел(а) из комнаты
[11:42:43] ftrvxmtrx вошёл(а) в комнату
[11:43:17] ftrvxmtrx вышел(а) из комнаты
[11:43:27] ftrvxmtrx вошёл(а) в комнату
[12:01:09] ftrvxmtrx вошёл(а) в комнату
[12:16:06] <f[x]> bpob
[12:16:16] <f[x]> bobry: помгнться
[12:16:18] <f[x]> тьфу
[12:16:30] <f[x]> bobry: помнится jdh увлекался bwt
[12:19:15] <superbobry> ху из jdh?
[12:21:05] <f[x]> стыдно не знать
[12:21:16] <f[x]> основополагающий тролль
[12:21:37] <f[x]> шарпоренегад
[12:21:42] <superbobry> ну, видимо он обошел меня стороной -- где искать?
[12:22:17] <f[x]> летающая лягушка
[12:22:20] <Kakadu> jake?
[12:32:33] <ftrvxmtrx> харроп?
[12:33:12] <f[x]> приз в студию!
[12:33:39] <superbobry> ah
[12:45:07] gds вошёл(а) в комнату
[12:57:38] Andrey Popp вошёл(а) в комнату
[13:03:06] dzhon вошёл(а) в комнату
[13:04:08] <f[x]> трабл с xmlm - http://erratique.ch/repos/xmlm/commit/?id=3f0df24020df9dd120bfd1b56e094a4b2c6a8ec8
[13:04:17] <f[x]> до сих пор не зарелизено - I LOVE KAMLO!111
[13:04:24] ftrvxmtrx вышел(а) из комнаты
[13:05:02] <superbobry> bdsmlove
[13:05:19] ftrvxmtrx вошёл(а) в комнату
[13:06:23] <f[x]> THEM LUV ME 2
[13:06:26] dzhon вышел(а) из комнаты: Replaced by new connection
[13:06:29] dzhon вошёл(а) в комнату
[13:09:43] dzhon вышел(а) из комнаты: Replaced by new connection
[13:09:43] dzhon вошёл(а) в комнату
[13:10:16] ftrvxmtrx вышел(а) из комнаты
[13:11:03] dzhon вышел(а) из комнаты: Replaced by new connection
[13:11:03] dzhon вошёл(а) в комнату
[13:11:07] ftrvxmtrx вошёл(а) в комнату
[13:16:56] dzhon вышел(а) из комнаты: Replaced by new connection
[13:16:57] dzhon вошёл(а) в комнату
[13:23:03] ftrvxmtrx вышел(а) из комнаты
[13:25:07] ftrvxmtrx вошёл(а) в комнату
[13:25:47] ftrvxmtrx вышел(а) из комнаты
[13:26:00] ftrvxmtrx вошёл(а) в комнату
[13:28:36] ftrvxmtrx вышел(а) из комнаты
[13:28:57] ftrvxmtrx вошёл(а) в комнату
[13:32:51] ftrvxmtrx вышел(а) из комнаты
[13:33:43] ftrvxmtrx вошёл(а) в комнату
[13:44:00] dzhon вышел(а) из комнаты: Replaced by new connection
[13:44:00] dzhon вошёл(а) в комнату
[13:44:23] dzhon вышел(а) из комнаты: Выключил машину, дабы насладиться жизнью
[13:44:32] dzhon вошёл(а) в комнату
[13:49:51] klapaucius вошёл(а) в комнату
[13:54:06] <klapaucius> Харроп очень полезный тролль - с удовольствием пожал бы его зеленую мозолистую руку. Благодаря давлению его троллинга в хаскеле исправили много проблем, например сделали кард-маркинг для массивов и написали относительно быстрые хэш-таблицы.
[13:55:02] <superbobry> реквестирую пару примеров троллинга
[13:55:24] <f[x]> klapaucius: угу
[13:56:36] <klapaucius> http://flyingfrogblog.blogspot.com/2009/04/f-vs-ocaml-vs-haskell-hash-table.html
[13:57:37] shaggie вошёл(а) в комнату
[13:57:55] <superbobry> ох какой шик, надо пожалуй будет почитать его бложек
[13:58:54] ftrvxmtrx вышел(а) из комнаты
[14:00:49] ftrvxmtrx вошёл(а) в комнату
[14:05:49] ftrvxmtrx вышел(а) из комнаты
[14:06:25] ftrvxmtrx вошёл(а) в комнату
[14:17:47] <gds> вопрос к знатокам camlp4.  насколько сложно сделать так, чтобы из исходника получалась программа, которая частично исполняет исходный код (места, требуемые для исполнения, выделены синтаксически и доступны для camlp4), а частично выводит остальные куски исходника в stdout?
[14:18:27] <f[x]> остальные части исходника - валидный код?
[14:18:38] <f[x]> либо их можно запилить в квотейшны
[14:18:54] <gds> везде валидный код -- и в исходнике, и в выводимых кусках, и в результате генерации.
[14:19:01] <superbobry> вроде несложно
[14:19:05] <f[x]> и вообще camlp4 тут не нужен - в камле есть шикарная фича - называется "строковый литерал"
[14:19:13] <superbobry> :)
[14:19:56] <gds> дело в том, что мне хочется скомпилировать и оттайпчекать как исходную программу, так и результат того, что она насерет в stdout.
[14:35:07] <gds> то есть, фича шикарная, но не покатит.
а с quotations -- можете рассказать на уровне "как для дебила" основные принципы?
вот игрушечный пример: была программа:
let quote x = x
let eval x = x  (* чисто как пометки для camlp4 *)
let rec pow = eval (fun n -> if n = 1 then quote (fun x -> x) else quote (fun x -> x * eval (pow (n - 1) x)))
let cube = eval (pow 3)
из этого хочется получить программу:
let rec pow_text = if n = 1 then print "fun x -> x" else print "fun x -> x * (" ^ (pow_text (n - 1)) ^ ")"
let () = print "let cube = " ^ (pow_text 3)
при запуске которой на stdout будет выведено:
let cube = fun x -> x * ((fun x -> x * (fun x -> x)) x)
ну, пример тупой, конечно, и я мог ошибиться в деталях в нём, но принцип, наверное, понятен -- quote/eval.
[14:35:25] dzhon вышел(а) из комнаты
[14:35:48] dzhon вошёл(а) в комнату
[14:39:07] <f[x]> а, так это ты metaocaml изобретаешь
[14:39:15] <f[x]> let rec pow = (fun n -> if n = 1 then .< (fun x -> x) >. else .< (fun x -> x * .~ (pow (n - 1)) x ) >. )
let cube = (pow 3)
[14:39:22] <f[x]> val pow : int -> ('a, int -> int) code = <fun>
val cube : ('a, int -> int) code =
  .<fun x_1 -> (x_1 * ((fun x_2 -> (x_2 * ((fun x_3 -> x_3) x_2))) x_1))>.
[14:39:30] <gds> да, причём compile-time metaocaml.
[14:43:38] <gds> а хотя вот, думаю, что quote/eval не так уж нужны.  достаточно только протянуть нужные, специально-отмеченные значения в функции, избавившись от этих значений, и вывести исходник как есть.
про metaocaml знаю, и велосипедничать не собирался, если бы было хоть сколько-нибудь много гемора, поэтому и начал первый вопрос как "насколько сложно ... ?".
[14:47:10] <gds> а ещё думал подобным подходом как-то намутить арифметику на типах, собственно, потому и вспомнил про эту всю байду.  достаточно было бы объявить индексы (натуральные числа) как "те значения, от которых надо избавиться при первом этапе компиляции", и они бы не попали в рантайм.  то есть, проверки-выводы были бы, но только при первом этапе компиляции, дальше можно было бы отбросить эти значения вообще.
[14:47:39] <f[x]> тебе нужен metaocaml - по-любому
[14:48:04] <f[x]> в compile-time
[14:48:09] <gds> но мне не нужен jit и нужна работоспособность падвендой.
[14:48:17] <f[x]> получаешь раскрытый код и дальше его компилишь обычном камлом
[14:48:20] <gds> "в compile-time" -- уточни?
[14:48:42] <f[x]> ну он генерить же код может - в виде текста
[14:48:47] <f[x]> и даже в сишечку иногда
[14:49:00] <f[x]> для конкретных значений подставляемых переменных
[14:49:07] <f[x]> генерация в рантайме - это бонус
[14:49:10] <f[x]> тебе не нужный
[14:49:24] <f[x]> я же показал сессию в топлевеле - на выходе валидный камлокод
[14:49:41] Kakadu вышел(а) из комнаты
[14:50:08] <gds> то есть, там либо есть опция "генерировать камлокод", либо несложно добавить её, так?
[14:51:01] <f[x]> думаю да
[14:51:45] <gds> f[x]: а можешь рассказать, что ты такое на metaocaml делаешь, настолько, что знаешь его на таком уровне, что смог за считанные минуты привести сессию в топлевеле?
[14:52:18] <f[x]> та ничего не делаю
[14:52:28] <f[x]> освоил когда-то
[14:52:32] <f[x]> там же три операций
[14:52:37] <f[x]> один в один как ты написал
[14:52:42] <f[x]> build - eval - run
[14:53:12] <f[x]> просто надо wrapнуть моск вокруг него
[14:53:21] <f[x]> макросы на стероидах
[14:53:33] <gds> понял.  благодарю за помощь.  пошол натягивать моск на него.
[14:53:57] <f[x]> у меня 3.09 но его недавно пилили до 3.12 вроде
[14:54:35] Typhon вошёл(а) в комнату
[14:54:44] Kakadu вошёл(а) в комнату
[14:54:50] Typhon вышел(а) из комнаты
[14:58:52] dzhon вышел(а) из комнаты
[15:01:21] Typhon вошёл(а) в комнату
[15:05:22] <gds> да, чото только под 3.09 дают.  пичалька.
[15:06:43] <f[x]> http://okmij.org/ftp/ML/index.html#ber-metaocaml
[15:06:48] <f[x]> 3.11.2
[15:10:06] <f[x]> 3.12 наверное почудилось
[15:11:20] <gds> а, тут ещё и компилятор патчить надо.
что-то мне это не нравится.  вроде всё то, да не настолько нужно, если с такими геморами, как привязка к 3.09 в случае простого метаокамла и патчинг компилятора для ber-metaocaml.
[15:15:34] dzhon вошёл(а) в комнату
[15:35:20] letrec вошёл(а) в комнату
[15:51:27] Typhon вышел(а) из комнаты
[16:05:31] <f[x]> ой, прям проблема попатчить :)
[16:05:35] <f[x]> в любом случае руками собирать
[16:06:02] <f[x]> это же отдельный от основного компилер
[16:13:19] Andrey Popp вышел(а) из комнаты
[16:13:26] Andrey Popp вошёл(а) в комнату
[16:16:12] Andrey Popp вышел(а) из комнаты
[16:16:32] Andrey Popp вошёл(а) в комнату
[16:20:14] Kakadu вышел(а) из комнаты
[16:31:47] <gds> а вот с проверкой на попадание индекса в границы массива -- даже с метаокамлом не ясно, как оформить.  или это просто я не понимаю, а как-то можно?
[16:32:50] <f[x]> gds ударился в dependent types, все в машину
[16:33:39] <gds> не, просто интересно посмотреть/прикинуть.
на практике -- нахрен не нужно, но границы возможностей знать не лишне.
[16:38:50] Kakadu вошёл(а) в комнату
[17:09:08] Typhon вошёл(а) в комнату
[17:14:45] superbobry тут думает портировать в камло конфигуратор с х-ля
[17:15:12] <Kakadu> зачем?
[17:15:23] <superbobry> шобы иметь нормальные конфиги
[17:15:27] <superbobry> в х-ле это почти стандарт
[17:15:35] <Kakadu> что за конфиги?
[17:16:59] <superbobry> http://hackage.haskell.org/packages/archive/configurator/latest/doc/html/Data-Configurator.html
[17:19:54] <gds> ну всё, пути назад нет.  http://gds.livejournal.com/63409.html
[17:21:24] <Kakadu> gds: а я до сих пор не знаю/не помню что такое dependent types)
[17:22:08] <gds> Kakadu: счастливый человек.  впрочем, дабы погрузиться в омут пичальки и безысходняшечьки, почитай последние посты lj\thedeemon.
[17:22:42] <Kakadu> gds: про ООП на категориях?
[17:22:51] <gds> ет.
[17:23:31] <Kakadu> gds: про ATS?
[17:23:36] <gds> да.
[17:31:52] superbobry вышел(а) из комнаты
[17:39:45] dzhon вышел(а) из комнаты
[17:45:14] dzhon вошёл(а) в комнату
[17:49:50] <f[x]> gds: зато по твоей наводке надыбал новые (2010) слайды по metaocaml
[17:49:53] <f[x]> у Олега
[17:50:18] Typhon вышел(а) из комнаты: Replaced by new connection
[17:51:04] Typhon вошёл(а) в комнату
[17:51:09] Typhon вышел(а) из комнаты
[17:51:49] Typhon вошёл(а) в комнату
[17:57:00] <gds> f[x]: если не влом, покажи, видимо я их пропустил.  всё-таки хочу изучить metaocaml.
[18:07:56] <f[x]> http://www.cs.rutgers.edu/~ccshan/metafx/metaocaml-slides.pdf
[18:24:12] Typhon вышел(а) из комнаты
[18:25:25] Typhon вошёл(а) в комнату
[18:39:06] Typhon вышел(а) из комнаты: Replaced by new connection
[18:39:57] Typhon вошёл(а) в комнату
[19:11:05] dzhon вышел(а) из комнаты
[19:15:51] dzhon вошёл(а) в комнату
[19:19:03] Typhon вышел(а) из комнаты
[20:07:04] ftrvxmtrx вышел(а) из комнаты
[20:09:45] ftrvxmtrx вошёл(а) в комнату
[20:23:31] dzhon вышел(а) из комнаты: Replaced by new connection
[20:23:31] dzhon вошёл(а) в комнату
[20:24:18] ftrvxmtrx вышел(а) из комнаты
[20:27:29] ftrvxmtrx вошёл(а) в комнату
[20:30:28] ftrvxmtrx вышел(а) из комнаты
[20:53:45] dzhon вышел(а) из комнаты
[21:03:13] letrec вышел(а) из комнаты
[21:29:32] f[x] вошёл(а) в комнату
[21:33:12] komar вышел(а) из комнаты
[22:15:45] bobry вошёл(а) в комнату
[22:21:57] komar вошёл(а) в комнату
[22:27:07] shaggie вышел(а) из комнаты
[23:13:32] bobry вышел(а) из комнаты
[23:14:48] bobry вошёл(а) в комнату
[23:21:51] Andrey Popp вышел(а) из комнаты
[23:59:07] ftrvxmtrx вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!