Home
OCaml (aka Objective Caml), а также прочие ML'и, F#, Coq, etc
ocaml@conference.jabber.ru
Понедельник, 16 сентября 2013< ^ >
f[x] установил(а) тему: OCaml / ОКэмл / Камль -- http://ocaml.org/ | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | KEEP CAML AND CURRY ON | F#, Coq - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[01:19:13] Kakadu вышел(а) из комнаты
[01:22:36] komar вышел(а) из комнаты
[05:34:19] f[x] вошёл(а) в комнату
[06:55:20] <f[x]> [ERROR] Skipping http://kakadu.github.io/lablqt/opam as the repository is not available.
[07:18:00] ForNeVeR вошёл(а) в комнату
[08:35:40] ForNeVeR вышел(а) из комнаты
[08:39:10] ForNeVeR вошёл(а) в комнату
[09:14:38] ForNeVeR вышел(а) из комнаты: Replaced by new connection
[09:14:44] ForNeVeR вошёл(а) в комнату
[09:47:58] f[x] вышел(а) из комнаты
[10:47:20] f[x] вошёл(а) в комнату
[11:05:02] <gds> f[x]: ну чочо с bigarray, есть идеи/решения?
[11:09:40] <f[x]> а bigarray нельзя кастовать
[11:09:42] <f[x]> ?
[11:10:04] <f[x]> выглядит как печалька
[11:10:18] <gds> да чото не нашёл про касты.
[11:11:47] <gds> в качестве правильного решения, наверное, надо было бы зафайлить фичереквест.  Но это долго и хз эффективно ли.  А моё предложение запилить просто.
[11:11:56] <gds> и быстро, что главное.
[11:12:32] <f[x]> я думаю просто переключиться на char bigarray
[11:12:37] <f[x]> не знаю зачем там int
[11:12:45] <gds> могу заняться запиливанием.  Но название для нового типа не могу придумать.  'a buffer8?
[11:13:00] <gds> переключаться не стоит, можно сломать код, использующий extunix.
[11:13:34] <gds> а моё предложение ничего не ломает и не может сломать.
[11:15:37] <f[x]> но там ведь в принципе никакие параметры bigarray фиксировать необязательно
[11:16:06] <f[x]> может ты хочешь float'ы читать из файла...
[11:16:13] <f[x]> как-то некрасиво получается
[11:16:42] <gds> логично.
[11:16:58] <f[x]> функтор лепить?
[11:17:05] <f[x]> и дефолтные применения..
[11:17:29] <gds> нахрена функтор?  дать полиморфизму работать естественным образом.
[11:17:30] <f[x]> функтор с точки зрения кол-ва изменений будет проще :)
[11:18:17] <f[x]> осталось понять layout можно менять или нет..
[11:18:23] <gds> просто использовать ('a, 'b, 'c) Bigarray.Array1.t (или как там его) в сигнатурах.
[11:18:56] <gds> а там народ разберётся, какие типовые параметры им нужны.
[11:19:16] <f[x]> громоздко будет, не?
[11:19:42] <f[x]> в общем согласен
[11:19:49] <gds> type inference есть же.  Если они из этого буфера будут читать символы, очевидно, 'a = char.
[11:20:26] <gds> или переместить BA -> BApoly, а в BA прописать те же функции, что в BApoly, только ограничить их сигнатурой с текущим buffer.
[11:20:37] <f[x]> не, не
[11:20:44] <f[x]> я про то что патч будет на миллион строчек
[11:20:58] <f[x]> может DEFINE buffer ('a,'b,'c) array1?
[11:21:00] <f[x]> ;)
[11:21:01] <gds> интерфейс BA такой большой?
[11:21:15] <f[x]> жду патча!
[11:21:26] <gds> ты про BApoly?
[11:21:32] <f[x]> не надо polu
[11:21:39] <f[x]> * poly
[11:21:40] <gds> придумай лучше.
[11:21:47] <f[x]> естественный полиморфизм норм
[11:22:05] <gds> про DEFINE шутку понял :)
[11:23:25] <gds> только вот кое-где может сломаться.  Надо бы ещё заметку типа "если полиморфизм не догадывается о типе буфера, припишите тип явно: (buf : ExtUnix.*.buffer)".
[11:23:39] <f[x]> я только не уверен что это на 100% шутка
[11:23:59] <gds> серьёзно хочешь препроцессор тут?
[11:24:16] <f[x]> там уже есть препроцессор
[11:24:18] <f[x]> наверное не стоит
[11:24:20] <f[x]> это так
[11:24:51] <f[x]> в changelog'е будет упоминание конечно
[11:24:59] <f[x]> так что в ограниченном масштабе ломать можно
[11:25:16] <f[x]> тем более что версия << 1.0
[11:25:26] <gds> тут, как я понял, патч будет таким: в BA сделаю s/buffer/('a, 'b ...)/g.  Так?
[11:25:36] <f[x]> ага
[11:25:36] <gds> но явный buffer оставить надо точно.
[11:25:54] komar вошёл(а) в комнату
[11:25:57] <f[x]> why?
[11:26:12] <f[x]> extunix как бы всё равно что там за буфер
[11:26:18] <f[x]> главное что есть кусок памяти куда писать
[11:26:25] <f[x]> а как интерпретировать - это уже к юзеру либы
[11:27:06] <gds> buffer оставить -- чтобы не ломать тот код, который уже работает.  Ведь если можно не ломать, то почему бы и нет?
[11:27:45] <f[x]> если альфа версия - то лучше ломать..
[11:27:55] <f[x]> не вижу смысла енфорсить какой-то тип буферов
[11:28:00] <gds> ок.
[11:28:03] <f[x]> и уж если енфорсить - то лучше с char
[11:28:16] <gds> делать пуллреквест на гитхабе?
[11:28:49] <f[x]> как хочешь, можно патчем в мыло или в issues, либо пуллом
[11:29:20] <gds> ок.  Сегодня не обещаю, так как потестить надо ещё будет.
[11:29:40] <f[x]> ок
[12:02:04] Kakadu вошёл(а) в комнату
[12:26:17] <f[x]> gds: есть соображение что для функций конвретации endian'ов этого делать не надо
[12:27:52] <gds> не понял мысль.  Смотрю в Specific.BigEndian, не вижу упоминаний buffer и bigarray.
[12:29:49] <f[x]> есть там
[12:29:54] <f[x]> caml_extunixba_get_u8
[12:34:36] <f[x]> gds: а ещё, если полиморфить layout то это будет вляить на индексы
[12:34:40] <gds> но в интерфейсе не вижу.
[12:34:54] <gds> зафиксируем c_layout, стало быть.
[12:34:59] <gds> вроде годно.
[12:35:43] <f[x]> да, имхо норм
[12:36:01] <gds> кстати, про индексы: "val read : Unix.file_descr -> ExtUnixSpecific.buffer -> int" -- не вижу тут смещения "куда в buffer читать".
[12:37:27] <f[x]> pread?
[12:38:29] <f[x]> gds, итого ('a,'b,c_layout) для read/write, ('a,int8_elem,c_layout) для endian
[12:38:43] <f[x]> до тех пор пока кто-нибудь не захочет больше экзотики
[13:05:14] <gds> f[x]: смещение -- имею в виду в буфере, а не в файле.  Сравни с Unix.read, например.
[13:06:05] <gds> остальное -- сделаю именно так.
[13:06:25] <f[x]> угу, уже понял
[13:10:21] irezvov вошёл(а) в комнату
[13:22:39] irezvov вышел(а) из комнаты
[13:27:20] irezvov вошёл(а) в комнату
[14:02:27] irezvov вышел(а) из комнаты
[14:24:08] <gds> f[x]: можешь в паре слов описать, как делаются All/Specific?  Понятно, configure или подобное должно сначала определить, какие функции доступны, а дальше?
[14:27:42] <f[x]> дальше эта инфа складывается в src/config.ml и camlp4 pa_have генерит из extUnix.mlpp соответственно два модуля
[14:30:22] <f[x]> запихнул sqlgg в opam, FTGN (For The Great Niceness)
[14:34:55] <gds> f[x]: ещё buffer используется в: memalign (там вроде надо int8_elem зафиксировать), unsafe_{get,set}_substr (тоже), и в type iov (тут не знаю, вроде только c_layout нужно фиксировать).  Так?
[14:37:39] <f[x]> ыы
[14:37:41] <f[x]> я тормох
[14:37:52] <f[x]> везде ведь надо c_layout фиксировать
[14:37:58] <f[x]> т.к. это влияет на индексы
[14:38:01] <gds> понятно, что везде.
[14:38:23] <gds> я это подразумевал в своём сообщении от 4 минут назад.
[14:38:26] <f[x]> а
[14:38:29] <f[x]> ок :)
[14:38:47] <f[x]> тогда да
[14:40:33] <gds> но как представляю, что везде будут эти полные ( . , . , . ) Bigarray.Array1.t, как-то жутко становится.  Может алиасы им придумать?  carray, carray8?  Или нехай в полном виде остаётся?
[14:41:28] <f[x]> вот я про то и говорил в самом начале
[14:41:44] <f[x]> алиасы - да
[14:54:58] komar вышел(а) из комнаты: Logged out
[15:17:45] zinid вошёл(а) в комнату
[15:29:57] komar вошёл(а) в комнату
[15:36:47] f[x] вышел(а) из комнаты
[15:53:16] komar вышел(а) из комнаты: Logged out
[16:10:56] f[x] вошёл(а) в комнату
[16:30:21] n06r1n вошёл(а) в комнату
[16:31:14] n06r1n вышел(а) из комнаты
[16:40:53] f[x] вышел(а) из комнаты
[16:43:42] ermine вышел(а) из комнаты
[16:46:37] irezvov вошёл(а) в комнату
[16:52:55] irezvov вышел(а) из комнаты: Replaced by new connection
[16:52:56] irezvov вошёл(а) в комнату
[16:54:53] irezvov вышел(а) из комнаты: Replaced by new connection
[16:54:54] irezvov вошёл(а) в комнату
[16:55:35] Typhon вошёл(а) в комнату
[17:01:08] Typhon вышел(а) из комнаты
[17:22:07] irezvov вышел(а) из комнаты: Replaced by new connection
[17:22:09] irezvov вошёл(а) в комнату
[17:24:14] ocaml вошёл(а) в комнату
[17:43:20] f[x] вошёл(а) в комнату
[18:03:26] ermine вошёл(а) в комнату
[18:09:35] zinid вышел(а) из комнаты
[18:17:15] Zbroyar вошёл(а) в комнату
[19:00:38] ocaml вышел(а) из комнаты
[19:10:25] ocaml вошёл(а) в комнату
[20:27:35] f[x] вышел(а) из комнаты
[20:29:30] Zbroyar вышел(а) из комнаты
[20:30:49] Zbroyar вошёл(а) в комнату
[20:40:23] ocaml вышел(а) из комнаты
[20:57:00] Kakadu вышел(а) из комнаты
[21:05:55] <gds> f[x]: совсем по-тупому не выйдет, caml_extunixba_pread_common содержит код size_t len = Caml_ba_array_val(v_buf)->dim[0], тогда как надо бы домножить на размер хранимого элемента.  То есть, проще будет использовать caml_ba_byte_size.
[21:29:39] <gds> чото лажа вообще.  Читаем 8-байтовые float, в файле 10 байтов.  Что писать в массив, что возвращать в качестве "количество прочитанных ..."?
[21:49:49] Kakadu вошёл(а) в комнату
[21:54:23] <gds> как вариант, подумалось, сделать так, чтобы пользователь сам считал байты "сколько читать", и чтобы extunix возвращал результат в байтах.  Если что не вписалось (как в примере выше) -- ну, возвратится 10 байтов, пользователь выровняет по границе 8, и окажется у него 1 элемент.
[22:12:42] komar вошёл(а) в комнату
[22:21:09] komar вышел(а) из комнаты: Replaced by new connection
[22:21:09] komar вошёл(а) в комнату
[22:32:18] ForNeVeR вышел(а) из комнаты: Replaced by new connection
[22:32:25] ForNeVeR вошёл(а) в комнату
[23:18:53] ForNeVeR вышел(а) из комнаты
[23:19:31] ForNeVeR вошёл(а) в комнату
[23:41:18] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!