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

GMT+4
[00:30:05] Kakadu вышел(а) из комнаты
[01:39:28] ygrek вышел(а) из комнаты
[03:10:30] ermine вышел(а) из комнаты
[07:53:25] iNode вышел(а) из комнаты
[08:22:41] iNode вошёл(а) в комнату
[09:00:55] gds вошёл(а) в комнату
[09:10:58] Kakadu вошёл(а) в комнату
[09:29:05] <gds> Kakadu: насчёт той статьи -- не ясно, чего тебе хочется от типизации.  Если фокус с GeoObject -- так:
type renderable = unit -> unit
let renderable_of_geo_object o = fun () -> render_the_object o
let renderable_of_someshit x = fun () -> render_some_shit x
вот и всё -- объекты имеют один тип, объекты умеют рендериться (применением к ним ()).
если чуть гламурнее, type renderable = < render : unit >, и теперь рендериться будут по somevalue#render  (хоть это и слегка противоречит хорошему стилю).
[09:57:05] ygrek вошёл(а) в комнату
[10:05:34] serp256 вошёл(а) в комнату
[10:07:50] ermine вошёл(а) в комнату
[10:37:04] ʇsʎɯ вошёл(а) в комнату
[11:15:46] Kakadu вышел(а) из комнаты
[13:14:01] zert вышел(а) из комнаты
[13:15:19] zert вошёл(а) в комнату
[13:54:31] Kakadu вошёл(а) в комнату
[14:09:42] Kakadu вышел(а) из комнаты
[14:26:23] Kakadu вошёл(а) в комнату
[14:26:27] sceptic@Work вошёл(а) в комнату
[14:26:55] <sceptic@Work> http://www.opennet.ru/opennews/art.shtml?num=27601
...
Использование  C++-представления для организации работы с переменными JavaScript, позволило повысить эффективность выполнения скриптов, требующих интенсивных численных вычислений, например, для обработки графики. Для всех типов переменных теперь используется единая 64-разрядная переменная jsval, в первых 32-битах которой закодирован тип, позволяющий отличить указатели на строки, объекты, числа с плавающей точкой и целочисленных переменных;
...
Они Окамла накурились?
[14:28:39] <gds> трюк общеизвестный таки.
[14:29:51] <sceptic@Work> интересный..
[14:33:33] <gds> вот например про какой-то из лиспов, http://openmcl.clozure.com/manual/chapter16.2.html , глава 16.2.4.
[14:33:52] <gds> (искал по "low 3 bits", так как что-то такое слышал)
[14:34:05] <sceptic@Work> ты хорошо yacc/lex знаешь?
[14:34:53] <gds> относительно.  Подзабыл, но коллеги по конфе подскажут, если не вспомню.
[14:38:12] <sceptic@Work> Есть задача, правда на Сях, но не думаю что это будет большим оффтопом (согласен даже на решение на ocamllex/ocamlyacc): есть .h файл с глобальными перменными которые используются в программе, нужно написать парсер текстового файла (конфига), который бы заполнял эти переменные.
те скажем у меня есть в conf.h следующяя строка: int var_connection_port; и строка в конфига var_connection_port = 25;
Вообще задача стоит, как с наименьшим количеством копипасты это сделать.
[14:40:02] <sceptic@Work> у меня есть пару идей, но интересно умных людей послушать
[14:45:13] <gds> если реализовывать на сях, копипасты будет меньше, так как там есть макросы, а в окамле их нет.
я бы сначала загнал всё в исходник вида
PARAM(int, var_connection_port)
PARAM(type, var_name)
а затем, выбирая нужный PARAM, генерить для .h-файла
int var_connection_port;
...
, а для парсера -- табличку вида
( "var_connection_port", "int", &var_connection_port )
далее ясно, думаю.
[14:52:03] <gds> кстати, тоже не прочь послушать умных людей.  А то порой кажется, что на цэ можно писать только с препроцессором.
[14:56:24] <sceptic@Work> те "ошибки типизации" я буду отлавливать уже в yacc ?
[14:56:49] <sceptic@Work> те у меня скажем var_connection_port должен быть int, а lex распознал там STRING
[14:58:44] <sceptic@Work> очень хочется меньше телодвижений =/ т.е. хочется минимизировать количество мест, в которых нужно будет сделать правки, чтобы добавить новую перменную в конфиг.
[15:01:52] <Kakadu> Я не совсем понял, но что будет если так:
[15:02:51] <Kakadu> Для каждой строчки $s из конфига взять название переменной $id и заменить в файле .h  этот $id на $s
[15:03:01] <gds> ошибки типизации -- да, в yacc ловить.  Знаем, какого типа переменная, знаем, какого типа токен.  Дальше или ругаться, или преобразовывать.
[15:03:31] <Kakadu> Правда у меня никаких проверок типизации нет.\
[15:05:17] <sceptic@Work> Идея в том, чтобы это .h вообще не трогать, или минимально его менять. и ещё один момент, конфиг читается в рантайме, никакого .h на этом этапе разумеется нет.
[15:13:55] <gds> а какова фига в .h находятся реальные значения, а не extern-объявления?
[15:15:24] <sceptic@Work> пускай будут extern :)
[15:20:43] <gds> тогда генери .c-файл, и, если надо его сгенерить по конфигу, делай это через yacc (тогда &var не надо), а если заполнить в рантайме, то заполняй через *var_ptr = value_from_config.
[15:22:24] <sceptic@Work> Смотри. Таким макаром у меня получается два места для переменных.
1) это .h собственно с переменными
2) это место где будет хранится таблица {"var_name", &var_name, type}
и это меня напрягает.
[15:26:43] <gds> бери lisp/js/perl, делай там eval("my_var = my_val").
таблицу можно и генерить.
[15:32:28] ygrek вышел(а) из комнаты: Replaced by new connection
[15:32:29] ygrek вошёл(а) в комнату
[15:41:54] digital_curse вышел(а) из комнаты
[17:09:28] iNode вышел(а) из комнаты
[17:09:37] iNode вошёл(а) в комнату
[17:11:56] iNode вышел(а) из комнаты
[17:13:28] ygrek вышел(а) из комнаты
[17:30:50] gds вышел(а) из комнаты
[17:34:18] serp256 вышел(а) из комнаты
[18:48:39] gds вошёл(а) в комнату
[19:27:00] <SV0L0CH> пока я спал тут уже жабоскрипт обсудили :-/
[19:34:29] iNode вошёл(а) в комнату
[19:36:50] gds вышел(а) из комнаты
[19:50:02] Kakadu вышел(а) из комнаты
[19:50:45] sceptic вышел(а) из комнаты
[20:00:42] SV0L0CH вышел(а) из комнаты
[20:04:56] <f[x]> почему-то в Enum спрятан next, приходится делать бяку -
let enum_next : 'a Enum.t -> 'a = fun e -> (Obj.obj (Obj.field (Obj.repr e) 1) : unit -> 'a) ()
[20:05:16] f[x] сильно испортил карму?
[20:23:21] SV0L0CH вошёл(а) в комнату
[20:23:32] ygrek вошёл(а) в комнату
[20:37:59] ʇsʎɯ вышел(а) из комнаты
[21:00:07] Kakadu вошёл(а) в комнату
[21:10:04] <Kakadu> А что означает фраза "Таким транслятором можно booststrap'ом и сам Clang в Ocaml замаппить."? Что такое clang я понял, но в целом - не понял...
[21:10:50] <zert> гг
[22:22:31] Kakadu вышел(а) из комнаты
[23:12:38] Mon вышел(а) из комнаты
[23:17:09] <ygrek> круто! delimcc для native
[23:31:00] digital_curse вошёл(а) в комнату
[23:39:11] Kakadu вошёл(а) в комнату
[23:53:44] digital_curse вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!