Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 17 февраля 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Вики -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+3
[00:20:55] komar вышел(а) из комнаты
[00:21:01] komar вошёл(а) в комнату
[00:31:41] ygrek вышел(а) из комнаты
[00:31:48] ygrek вошёл(а) в комнату
[00:36:11] ermine вышел(а) из комнаты
[01:47:41] <ygrek> ragel report: табличный (-T0, самый медленный) камлевый парсер получается в два раза медленней go (-G2, самый быстрый)
[01:57:44] ygrek вышел(а) из комнаты
[05:02:29] Typhon вышел(а) из комнаты
[08:15:02] komar вышел(а) из комнаты
[08:21:28] iNode вошёл(а) в комнату
[08:50:37] gds вошёл(а) в комнату
[09:11:29] komar вошёл(а) в комнату
[09:20:18] Typhon вошёл(а) в комнату
[09:21:19] <gds> удивительно.  Зашёл на http://forge.ocamlcore.org/projects/batteries/ и не могу определить, кому/куда отрепортить багу.  Имхо это должно быть видно сразу.
В качестве второго вопроса -- а в самом деле, куда?
[09:46:13] ermine вошёл(а) в комнату
[10:12:25] Kakadu вошёл(а) в комнату
[10:27:53] <f[x]> зайди на batteries.forge там ссылка на github вроже
[10:34:02] <gds> а да, http://batteries.forge.ocamlcore.org/ даёт ссылку на "issues".  Берегитесь, батареечники!
[10:37:54] ygrek вошёл(а) в комнату
[10:38:08] ygrek вышел(а) из комнаты
[10:38:43] ygrek вошёл(а) в комнату
[11:22:46] ygrek вышел(а) из комнаты
[11:37:15] <gds> наспамил 3 бага: https://github.com/ocaml-batteries-team/batteries-included/issues#sort=updated
[11:40:06] <f[x]> так их
[11:48:30] ftrvxmtrx вышел(а) из комнаты
[12:45:46] ftrvxmtrx вошёл(а) в комнату
[13:05:21] <f[x]> плюсовый объекты в камлевых биндингах + smart_ptr + исключения = рецепт успеха
[13:07:35] <gds> интересна конкретика.  (более того, туплю и не понимаю, шутишь ли ты.)
[13:16:39] <f[x]> плюсовый exn кинутый с обёрнутого кода надо ловить в биндингах и превращать в камлевый exn - old news
поэтому во всех биндингах все вызовы плюсового кода обёрнуты в CXX_TRY CXX_CATCH (try { } catch () { caml_raise })
камлевский exception (caml_raise) не вызывает д-торы объектов в локальном фрейме
поэтому если объект создан перед CXX_TRY то при исключении д-тор не вызовется
а если этот объект smart_ptr то имеем классический fail (в моём случае fd leak)
мораль - _все_ плюсовые объекты создавать только после CXX_TRY
[13:26:17] <f[x]> ооо, Fabrice Le Fessant в gsoc mentors
[13:27:28] <gds> > камлевский exception (caml_raise) не вызывает д-торы объектов в локальном фрейме
ага, посмотрел, исключения в сишном коде ловятся через siglongjmp.  Который, конечно, деструкторы не уважает.  Буду знать.
[14:28:42] <gds> человек насмотрелся, как я делаю "value (f : int -> int) x = x + 1;" и хотел такой же фокус провернуть в original syntax.  Но не тут-то быдло.
# let (f : int -> int) x = x + 1;;
Characters 21-22:
  let (f : int -> int) x = x + 1;;
                       ^
Error: Syntax error
#
Как такие вещи записывают правильно?  Цель -- ограничить значение f заданным типом.
[14:36:50] <ermine> без скопок
[14:37:36] <ermine> и ф конец
[14:38:43] <gds>   let f : int -> int x = x + 1;;
                 ^^^^^
Error: Unbound type constructor x
  let f x = x + 1 : int -> int;;
                  ^
Error: Syntax error
  let f x : int -> int = x + 1;;
                         ^^^^^
Error: This expression has type int but an expression was expected of type
         int -> int
какие ещё варианты? :)
[14:39:08] <ermine> а
[14:39:10] <ermine> хехе
[14:39:41] <ermine> (f x) : .. ?
[14:40:07] <gds> let (f x) : int -> int = x + 1;; -- вообще синтаксическая ошибка на скобке.
[14:40:48] <ermine> беспредел :)
[14:41:07] <gds> Так!
[14:41:45] <gds> рисуем ещё один пунктик в списке преимуществ revised syntax :]
[14:47:46] <Typhon> let (f : int -> int) = function x -> …
[14:48:10] <gds> ну это да :)
[14:57:39] <Kakadu> let f (x : int) : int  = x+1;;
?
[14:57:53] <Kakadu> вроде такого ещё не было
[14:57:53] ftrvxmtrx вышел(а) из комнаты
[14:59:36] ftrvxmtrx вошёл(а) в комнату
[14:59:38] <gds> ага, тоже передал.
[15:00:12] <ermine> ну последний вариант - самый очевидный
[17:34:12] gds вышел(а) из комнаты
[18:10:54] Kakadu вышел(а) из комнаты
[18:28:54] gds вошёл(а) в комнату
[18:49:32] iNode вышел(а) из комнаты
[19:06:25] Kakadu вошёл(а) в комнату
[19:12:55] Typhon вышел(а) из комнаты
[19:25:55] <f[x]> gds: http://git.ocamlcore.org/cgi-bin/gitweb.cgi?p=ocaml-mysql/ocaml-mysql.git;a=commitdiff;h=6b8ebc96f487783761b2f265dc779c21036d178a
[19:26:10] <f[x]> не помнишь сходу нафига там :
+OCAMLLDFLAGS=-cclib -lmysql
[19:26:12] <f[x]> ?
[19:26:40] <f[x]> т.к. это ломает билд у меня и по-моему не нужно вообще
[19:28:38] <gds> если я такое делал, видимо, без этого не компилировалось на тот момент.  Может это поправили другими усилиями, а моё не убрали.
Как я понял, если у тебя собирается без этого, то однозначно убирай.
[19:29:43] <f[x]> ок
[19:50:07] <f[x]> так, а ну-ка специалисты по шеллам - как правильно стравнить две строки?
[19:51:18] <gds> конечно так, как написано в моём великом посте!  Но это для баша.  Сейчас найду.
[19:51:45] <f[x]> для баша, ха ха !
[19:52:54] <gds> да, для баша!  http://pastebin.com/wMe07nD1
[19:53:05] ftrvxmtrx вышел(а) из комнаты
[19:53:38] <f[x]> очевидно ocaml-mysql'евский configure только с bash'ем и проверяли
[19:53:50] <f[x]> $ bash -c 'test "yes" == "yes" && echo ok'
ok
$ dash -c 'test "yes" == "yes" && echo ok'
test: 1: yes: unexpected operator
[19:54:27] <f[x]> dash: [[: not found
[19:54:29] <f[x]> FAIL
[19:55:38] <f[x]> причём в одном месте правильно написано
[19:56:00] <f[x]> причём если не собирать тестовый бинарник то этого и незаметно
[19:56:23] <f[x]> обожаю динамические интерпретируемые недоязычки
[19:59:32] <gds> и как правильно для dash?
[20:00:10] <f[x]> test "yes" = "yes" :)
[20:03:10] <gds> и какого фига оно реально работает?..
[20:04:09] <f[x]> POSIX shell
[20:04:19] <f[x]> думаю
[20:05:04] <gds> может мне надо было без вызова шелловских команд, или ещё чего.  Но удивительно, что не увидел этого.
[20:06:16] <f[x]> а это встроенный test
[20:06:57] <f[x]> просто у bash'а встроенный test менее строгий
[20:32:41] Typhon вошёл(а) в комнату
[20:40:37] <Kakadu> чего-то у меня typecovе не собирается под 3.12.0
[20:40:48] <Kakadu> typeconv*
[20:41:02] <Kakadu> я даже не понимаю где у них оф. сайт
[20:42:05] <f[x]> ocaml.info
[20:48:28] <Kakadu> во, пошло дело
[21:05:45] <Kakadu> кто недавно кoмпилял oasis 0.2.0? Что за ошибка про ненайденный FI_metascanner?
[21:07:12] <f[x]> звучит как findlib
[21:09:46] <ermine> как тяжело собирать из исходников :)
[21:10:12] <Kakadu> я вообще себе дело усложнил
[21:10:25] <Kakadu> с помощью Virtualbox+XMonad
[21:10:54] <ermine> а внутри что?
[21:11:01] <Kakadu> debian
[21:11:12] <ermine> с тухлым софтом?
[21:11:30] <ermine> у меня оазис весь из исходников собран, и ничо так, не жаловалась
[21:11:33] <Kakadu> всё что связано с камлом я накомпилял
[21:11:50] <Kakadu> таак
[21:12:01] <Kakadu> для 0.2.0 какая версия нужна?
[21:12:16] <ermine> кого?
[21:12:20] <Kakadu> камла
[21:12:29] <ermine> ну у меня камло 3.12
[21:12:36] <Kakadu> и у меня
[21:13:03] <ermine> type-conv я просто взяла последней версии
[21:13:11] <ermine> как и всех остальных либл
[21:13:27] <Kakadu> ну я в принципе тже т ак действовал
[21:13:46] <ermine> чо, в дебиане все настолько старое?
[21:14:02] <Kakadu> ocsigen 1.3
[21:14:24] <ermine> а он с 3.12 не соберется :)
[21:14:29] <Kakadu> хочу на новый сразу смотреть
[21:14:35] <Kakadu> мне старый не надо
[21:14:40] <Kakadu> для старого пакетики есть
[21:21:07] <gds> не помню, на чём deriving обламывался, но сейчас (после изменений про camlp4) ругается на строчку:
      | `Mutable   -> <:ctyp< $lid:name$ : mutable $poly t$ >> (* mutable l : t doesn't work; perhaps a camlp4 bug *)
, конкретнее, на двоеточие перед "mutable", вот такими словами:
File "type.ml", line 454, characters 41-42:
While expanding quotation "ctyp" in a position of "expr":
  Parse error: [ctyp level star] expected (in [ctyp])
[21:34:31] <ermine> ищет тьюпл?
[21:34:56] <gds> похоже.  Но вообще странно всё это, и комментарий тоже.
[21:35:17] <ermine> ну может левелы не в том порядке воткнуты
[21:36:19] <gds> я настолько некопенгаген в camlp4, что даже не знаю, что и кому сказать.
[21:37:41] <ermine> я помучалась с левелами когда возилась со своим полиглотом, но с ctyp так и не сталкивалась еще
[21:37:47] <ermine> пронесло
[21:43:52] zert вышел(а) из комнаты
[21:52:53] zert вошёл(а) в комнату
[21:55:13] <ermine> let find name =
  (get_db () >>= fun dbh ->
     Lwt_Query.view dbh
     <:view< {password = row.password} |
         row in $table$;
         row.login = $string:name$; >>)
[21:55:32] <ermine> вот что такое macaque (надстройка над pgocaml)
[21:59:01] <ermine> gds: а чо, view круче чем select?
[22:05:58] <gds> ermine: не понимаю, о чём речь.  Lwt_Query вижу впервые.
[22:07:20] <Typhon> в смысле, "круче"?
[22:10:20] <ermine> gds: ну это кастомный модуль склеенный из пары-тройки других модулей
[22:10:40] <ermine> gds: я про <: .. >> и генерилку списка
[22:12:11] <Typhon> хм, тут view чтоле это не sql-view? "orm" какой-то, прямо
[22:12:44] <ermine> это dsl
[22:14:15] <gds> и во что оно кодогенерится, если в двух словах?
[22:18:03] <ermine> ве, а ocamlfind не умеет camlp4o
[22:19:57] gds пытается прикинуть эрланг (ну, message pissing) на камле (поверх lwt либо другой монады, всяко).  Вспоминается: "трудно искать в тёмной комнате выбитые зубы сломанными руками"
[22:21:36] <zert> зачем ты ссышь на сообщения?
[22:21:46] <gds> я от них просто ссусь.
[22:22:19] <gds> для той сраной задачи они являются самым адекватным выбором, оттуда и попоболь.
[22:24:00] <ermine> модуль Event же
[22:25:07] <Typhon> mpi не поможет? :) или внутри процесса надо передавать?
[22:34:47] <gds> Event -- посмотрю.  Когда смотрел его впервые, давно, создалось впечатление, что я столько не выкурю.  Но сейчас, может, осилю.
mpi -- у меня важны не столько объёмы данных, сколько типы.  Внутри процесса тоже надо.  БОльшая часть будет внутри процесса, но с общением с запущенными процессами, с субедешечькой, с клиентами (будучи сервером).
То есть, даже если смотреть на Event, то только как на пример.
[22:44:24] <gds> но вообще даже не знаю, как и сделать.  Явно напрашиваются кучи легковесных процессов (lwt), рожаемых налево и направо, умеющих читать свою очередь, писать ответы.
Но, даже несмотря на это, не знаю, хватит ли этого.  Например, хочется реализовать такую штуку: из внешнего мира поступают определённые задания, и есть внешние команды, которые нужно запускать (точный вид зависит от задания), но можно запускать не более N одновременно (N<100).  Также нужна возможность их убивать (то есть, как конечный этап, будет посылка сигнала), убивать нужно при постановке нового задания в очередь.  Но критерии их убийства частично зависят от самих процессов (от того, какие именно внешние процессы были запущены, какой вид задания).
В общем, мрачно, если в целом.
[22:58:21] <zert> возьми уже ерланг
[22:59:10] <ermine> и переписать его на камло
[22:59:17] <ermine> как автор ежика уже пытался
[23:00:09] <zert> пытался ёжика на камле переписать?
[23:00:42] <ermine> ерланга
[23:01:04] ermine даже исходники видела и компилила их
[23:02:42] <Kakadu> и что получилось?
[23:05:37] <ermine> типизация небольшого варианта динамических штучек, а  так это была уже виртуальная машина даже
[23:06:04] <ermine> ну это давно было, когда деревья еще большими были
[23:12:53] gds вышел(а) из комнаты
[23:45:58] <Kakadu> как заглянуть внутрь cma?
[23:49:56] <Kakadu> а пофигу. Я понял почему у меня findlib не компилися
[23:51:29] <ermine> и почему?
[23:51:38] <Kakadu> руки не оттуда раструда
[23:51:47] <Kakadu> кое-что сбрал из исходников
[23:51:53] ermine дождалась вожделенного багфикса от аффтара ocsigen и компилит
[23:52:01] <Kakadu> кое-что установил дебиановское
[23:52:12] <Kakadu> а про findlib-blabla-dev забыл
[23:52:40] <Kakadu> обидно что конфиг скрипт это пропустил
[23:53:05] <ermine> "ну да, линукс - не девелоперская система!" (c) моё
[23:53:44] <Kakadu> я что-то вспомнил Шелтона Купера с его мучениями на тему сарказма
[23:53:46] <ermine> эм, ocsigen чоль хочет lwt поновее опять
[23:54:06] <Kakadu> а ты оазисом компиляешь?
[23:54:48] <ermine> ну да, у меня все свои проекты на оазисе теперь
[23:54:57] <ermine> и еще пилю галла при этом
[23:55:07] <ermine> он плохо пилится
[23:55:10] <Kakadu> галла это что?
[23:55:22] <ermine> Le Gall
[23:55:35] <Kakadu> а, это мужык
[23:55:35] <ermine> аффтар оазиса и главарь ocamlforge
[23:55:40] <Kakadu> понял
[23:57:14] <ermine> оазис штука неплохая но довольно убогенькая
[23:58:36] <Kakadu> Хочу, чтобы всё было у меня хорошо и лучше чем на винде
[23:58:59] <Kakadu> сегодня с удивлением обнаружил что asp.net не так убого устроен как я представлял...
[23:59:03] <Kakadu> несколько расстроился
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!