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:00:53] ygrek вошёл(а) в комнату
[00:16:02] ʇsʎɯ вышел(а) из комнаты
[00:19:37] arhibot вышел(а) из комнаты
[00:28:25] ermine вышел(а) из комнаты
[00:29:51] Kakadu вышел(а) из комнаты
[00:43:58] gds вышел(а) из комнаты
[00:54:59] ygrek вышел(а) из комнаты
[01:23:08] myxomop87 вышел(а) из комнаты
[01:30:33] zert вышел(а) из комнаты
[02:29:06] komar вышел(а) из комнаты
[03:20:55] Typhon вышел(а) из комнаты
[07:22:32] ermine вошёл(а) в комнату
[09:08:02] gds вошёл(а) в комнату
[09:24:59] iNode вошёл(а) в комнату
[09:41:58] <gds> йохохо.  видимо буду делать говноязычок.  хочу как-то заюзать тайпчекалку окамла вместе с генерацией в непонятночто.  ибо свою тайпчекалку для всяких там объектов мне писать откровенно лень.  как я понимаю, надо будет camlp4 для парсинга, но делать две "цели": 1. в окамл для типизации и тестовых запусков, 2. в непонятночто для непосредственно трансляции.  Так, получается?  (варианты с гибридом, когда оно с одной стороны выполняется, а с другой генерит исходнее на непонятночём, я рассматривал.  Что интересно, в классическом ML это можно вполне прилично накодить, ну и в лиспах, а больше и всё.)
В общем, чтобы я тут не умничал дофига, давайте тупые и практические идеи.
[10:04:25] serp256 вошёл(а) в комнату
[10:05:38] serp256 вышел(а) из комнаты
[10:05:43] serp256 вошёл(а) в комнату
[10:08:47] serp256 вышел(а) из комнаты
[10:09:24] serp256 вошёл(а) в комнату
[10:09:45] serp256 вышел(а) из комнаты
[10:19:20] arhibot вошёл(а) в комнату
[10:26:12] zert вошёл(а) в комнату
[10:49:26] ygrek вошёл(а) в комнату
[11:00:52] komar вошёл(а) в комнату
[11:05:48] komar вышел(а) из комнаты
[11:13:54] <f[x]> на форте пиши
[11:13:59] <f[x]> и тайпчекалка не нужна
[11:15:11] <gds> смысл как раз в тайпчекалке.
[11:16:42] <gds> без неё всё просто, так я умею.  более того, даже HM умею.  но вот реализовывать типизацию объедков и полиморфных вариантов -- гемор.
[11:25:03] myxomop87 вошёл(а) в комнату
[11:33:45] ygrek вышел(а) из комнаты
[12:18:08] komar вошёл(а) в комнату
[12:18:09] SerP вошёл(а) в комнату
[12:39:10] Typhon вошёл(а) в комнату
[12:44:13] <Typhon> gds: а от окамла только синтаксисом будет отличаться или семантически тоже где-то?
[12:47:00] <gds> отличается синтаксисом, типизацией, возможностями того языка, в который буду генерить (например, что не удивительно, там нет вариантных типов).  Сходу получается строго подмножество окамла пока что, но, думаю, в будущем понадобятся штуки, не реализованные в окамле (но реализуемые в нём; тогда буду отображать одну конструкцию своего языка на несколько конструкций окамла).
[13:08:56] arhibot вышел(а) из комнаты
[14:08:56] ermine вчера вечером собрала и поставила себе jocaml, теперь надо наверное сульцю под него испортить
[14:11:40] ʇsʎɯ вошёл(а) в комнату
[14:14:51] <zert> а он с обычным окамлем не конфликтует?
[14:15:22] <ermine> у него все на jo начинается
[14:15:35] <ermine> вот только не знаю как быть с камлофиндом
[14:15:56] <ermine> но я пока что ньюб
[14:30:00] <gds> наконец-то дошли руки до классического "tri-colour marking" алгоритма сборки мусора.  А прикольный :)  Интересно, как он на мутабельных данных работает.  А ещё интереснее -- напомните, почему в byterun/memory.h в #define Modify есть условие if (caml_gc_phase == Phase_mark), и caml_darken делается только по этому условию, и как оно всё живёт, если условие не выполняется?
[14:42:00] <ʇsʎɯ> задал бы ты вопрос в caml-list, дружище
[14:42:18] <ʇsʎɯ> там бы и народ нужный внимание обратил, и ты ответ получил бы
[14:42:25] <ʇsʎɯ> профит
[14:43:21] <gds> да ну, там это считают тривиальщиной.  Более того, палево: автор objsize не может задавать такие вопросы :)
[14:43:58] <gds> тем более, всё изучается через rtfs, там всё просто, однако конкретно сейчас в моск не влезает, а узнать было бы прикольно.
[14:44:30] <ʇsʎɯ> я бы спросил и не парился
[14:44:38] <ʇsʎɯ> если банальщина - ответить просто
[14:47:07] <komar> Тоже мне, тривиальщина.
[14:47:23] <komar> Вон, недавно из летучей жабы кто-то заходил и спрашивал, что еще за монады.
[14:47:44] <komar> Ой, это не он спрашивал.
[14:48:02] <komar> Другой кто-то.
[14:48:22] <gds> хуже того, что всё это описано в мануалах, на которые ссылки дают всегда.  И таки дадут ссылку.  В общем, проще сам поковыряю пока, но запишу в бамажку себе, чтобы не забыть, если сам не разберусь.
[15:05:59] ygrek вошёл(а) в комнату
[15:06:14] ygrek вышел(а) из комнаты
[15:06:59] ygrek вошёл(а) в комнату
[15:14:36] ygrek вышел(а) из комнаты
[15:47:43] arhibot вошёл(а) в комнату
[15:49:05] myxomop87 вышел(а) из комнаты
[16:15:26] arhibot вышел(а) из комнаты
[16:36:13] <gds> интересно, авторы oc4mc где-нибудь писали о том, какие вещи нужно учесть, чтобы поменять мусорщик в окамле?  Может кто-то видел?
[16:51:00] <f[x]> у них там guide есть как это сделать
[16:51:07] <f[x]> точнее как подключить свой мусорщик в oc4mc
[16:51:17] <gds> о, буду читать.
[16:51:52] <gds> ещё интересно: кто-нибудь пробовал избегать системно-зависимой процедуры "просканировать стек на предмет живых выделенных значений"?  Например, напрашивается мысль о хранении их на дополнительном стеке, так, что на основном стеке хранить только адрес на доп.стеке.
[16:55:43] <f[x]> в delimcc есть код для пробегания стека
[16:57:43] <gds> не нашёл их guide.  ну да ладно, если он есть, при необходимости найду.
[16:59:14] <gds> а про стек -- это я в целом, не конкретно для окамла, интересуюсь.  Для окамла всё просто: мусорщик есть и работает.  Даже два.
Почему именно тут интересуюсь -- контингент весьма вероятно имеет отношение к мусорщикам.  (сравните с подобными вопросами где-нибудь в цэ-два-креста-чятике.)
[17:00:24] <f[x]> есть всякие либы обёртки над этой процедурой
[17:00:30] <f[x]> в частности те что бэктрейс генерят
[17:00:47] <f[x]> насчёт guide'а я наврал :)
[17:00:59] <f[x]> у них там просто gc линкуется отдельно
[17:01:16] <f[x]> и их gc лежит отдельно в виде одного ml и одного сишного файла
[17:01:29] <gds> всё, что касается окамла и беготни по стеку, уже решено -- бектрейсы есть, delimcc есть.
[17:01:53] <f[x]> может там комменты в коде есть которые в моём воображении мутировали в guide
[17:01:57] <gds> про gc -- удивительно.  Учту.
[17:02:50] <f[x]> 1к на си
[17:03:32] <Typhon> клёвые новости, спасибо f[x] (про gc в отдельном месте)
[17:03:59] <f[x]> этим новостям примерно два года уже :)
[17:04:28] <gds> я живу под девизом "ТУПИ @ ТОРМОЗИ", чем достигается постоянный поток свежих новостей.
[17:04:37] <Typhon> я не кочал oc4mc и не ковырял
[17:04:49] <Typhon> а вот в оригинальный окамель gc пытался смотреть %)
[17:04:53] <Typhon> как и в хаскилевый
[17:05:07] f[x] качал и совсем немного ковырял, а хочется плотно за него взяться
[17:05:10] <gds> да, клёво.  Думал посмотреть, можно ли там через хитрожопые атомарные инструкции извратиться.  С другой стороны, из меня такой атомарный спец, шо я прям не знаю.
[17:06:06] Typhon думал про http://www.ioremap.net/projects/libatomic недавно
[17:06:21] <Typhon> о том, а можно ли как-то клёво в окамеле поюзать её
[17:08:07] <f[x]> от автора pohmelfs, внушает, да
[17:13:41] <Typhon> "download ocaml-3.10.2 source ... " а для 3.12 oc4mc не нашёл. плохо искал? или нету? или пофиг? :)
[17:13:56] <f[x]> я ж говорю, никому не нужен
[17:14:11] <f[x]> авторы вроде обещали обновить, но см. выше
[17:30:27] gds вышел(а) из комнаты
[18:04:09] gds вошёл(а) в комнату
[18:05:04] arhibot вошёл(а) в комнату
[18:12:39] Kakadu вошёл(а) в комнату
[18:13:17] <f[x]> самый популярный баг сегодня - external f : string -> ~x:string -> ?x:string option -> unit = "xxx" - два раза уже споткнулся
[18:15:48] <komar> А сходу никто не может сказать, откуда при Marshal.of_channel стек оверфлоу появляется?
[18:18:20] iNode вышел(а) из комнаты
[18:20:15] <f[x]> тип совпадает?
[18:23:52] <komar> Ха, нет.
[18:24:49] ermine вышел(а) из комнаты: Replaced by new connection
[18:24:50] ermine вошёл(а) в комнату
[18:29:34] <gds> komar: вывод: сделай функтор, через который будешь сериализовывать, и чтобы функтор проверял, что типы одного и другого совпадают.
[18:30:26] <f[x]> http://paste.in.ua/1299/
[18:30:47] <komar> О как хорошо.
[18:30:57] <komar> Я теперь всегда у вас фигню буду спрашивать.
[18:39:46] myxomop87 вошёл(а) в комнату
[18:47:29] <gds> скажите что-нибудь умное -- http://gds.livejournal.com/55830.html  (пофиг, там или тут)
[18:48:24] f[x] хз
[19:15:42] <Kakadu> gds: в дотнета данные+метаданные под тип переменной
[19:15:49] <Kakadu> в дотнете*
[19:16:39] <Kakadu> в метаданных  - информация  типе
[19:18:04] <gds> Kakadu: то есть, всё заворачивается (box'ится), любой указатель в регистре или на стеке является указателем на выделенный кусок памяти, так я понимаю?
[19:18:32] <Kakadu> да, если это "управляемый указатель"
[19:18:47] <Kakadu> есть ещё неуправляемые - они как в си
[19:19:36] <gds> а как его рантайм отличает одни от других?
[19:19:59] <Kakadu> ну там для них байткод другой
[19:20:04] <Kakadu> другие команды
[19:20:20] <Kakadu> а сборщик мусора отдыхает пока работает unsafe код
[19:20:51] <Kakadu> я вообще не уверен что для неуправляемых укаателей генерится байт код....
[19:20:58] <Kakadu> может быть что-то хитрое
[19:21:38] <gds> то есть, информация о неуправляемых протаскивается в типы, и не может быть полиморфного кода, работающего как с управляемыми, так и с неуправляемыми?
[19:24:07] <Kakadu> начет возможности одновременной работы я не знаю
[19:24:19] <Kakadu> В.Сафонов б этом сегодня только рассказывал
[19:24:36] <Kakadu> мы с ним обсудили что нам никогда неприходилось юзать неуправляемый код в дотнете
[19:24:49] <Kakadu> в книжке у него про эти возможности не сказано
[19:26:22] <Kakadu> ИМХО, полиморфного кода с# в вашем смысле не получается
[19:26:39] <Kakadu> полиморфного байткода - я хз
[19:32:45] <Kakadu> gds: http://paste.org.ru/?kxwlsd
[19:33:30] <Kakadu> если честно, мне самому байт код кажется неприятным после камла)
[19:39:58] Kakadu вышел(а) из комнаты
[19:50:45] Typhon вышел(а) из комнаты
[19:54:07] SerP вышел(а) из комнаты
[20:36:41] <gds> Kakadu: мне байткод непонятен из-за моей малограмотности.  Впрочем, вроде ничего серьёзного там не происходит, с виду похоже на обычное преобразование типов в сишном смысле.
[20:47:14] Kakadu вошёл(а) в комнату
[20:47:14] Kakadu вышел(а) из комнаты
[20:48:06] Kakadu вошёл(а) в комнату
[21:17:35] ʇsʎɯ вышел(а) из комнаты
[21:29:17] <Kakadu> $ rm -f ./me && ocamlc -pp '../syntax/deriving'  -I /usr/local/lib/ocaml/3.11.2/deriving/ `ocamlfind query num`/nums.cma deriving.cma me_tests.ml -o me && ./me
A ( int ->  float)
B ( unit ->  int list list)
$ cat me_tests.ml
type t = A of (int -> float) | B of (unit -> int list list) deriving (Show)
let f1 _ = 0.0 in
print_endline (Show.show<t> (A f1));
print_endline (Show.show<t> (B (fun () -> [])));
[21:30:04] <Kakadu> думаю остановиться в моих развлечениях с deriving.
[21:30:13] <Kakadu> Или ещё тесты вы предложите?
[21:40:47] Typhon вошёл(а) в комнату
[22:07:21] ygrek вошёл(а) в комнату
[22:16:20] <ygrek> круто
[22:17:00] <ygrek> ermine: ocamlfind можно обычный использовать, у jocaml бинарная совместимость
[22:17:20] <ygrek> т.е. можно свободно миксовать joкод и обычные либы камловские
[22:18:36] <ermine> ygrek: а ocamlfind jocaml умеет?
[22:18:51] <ermine> точнее ocamlfind jocamlc
[22:19:12] <ygrek> пожалуй нет
[22:19:23] <ygrek> но ты можешь toolchain в ocamlfind'е прописать
[22:19:31] <ygrek> и указать на jocaml
[22:20:24] <ermine> я пока еще не доползла до туториала по jocaml
[22:29:41] ygrek вышел(а) из комнаты
[22:29:43] ygrek вошёл(а) в комнату
[23:06:04] komar вышел(а) из комнаты
[23:23:50] serp256 вошёл(а) в комнату
[23:32:03] <zert> ermine: твоя сульца в programming@ до того обучилась, что стала умнее некоторых участников
[23:32:14] <zert> уже может поддерживать беседу
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!