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

GMT+4
[00:35:01] Typhon вышел(а) из комнаты
[00:37:34] ermine вышел(а) из комнаты
[01:05:41] ftrvxmtrx вышел(а) из комнаты
[01:09:52] ftrvxmtrx вошёл(а) в комнату
[01:09:53] komar вышел(а) из комнаты
[01:09:53] komar вошёл(а) в комнату
[01:13:47] Kakadu вышел(а) из комнаты
[01:28:44] Typhon вошёл(а) в комнату
[01:44:33] superbobry вышел(а) из комнаты
[01:49:39] superbobry вошёл(а) в комнату
[01:54:43] Sun][ вышел(а) из комнаты
[02:14:12] superbobry вышел(а) из комнаты
[03:03:14] wolf.ram вошёл(а) в комнату
[03:05:18] <wolf.ram> OCaml умеет pattern matching в параметрах fun?
[03:07:05] <gds> либо в fun, либо в function -- умеет.
[03:07:54] <wolf.ram> В function знаю.
[03:08:03] <wolf.ram> А вот в fun похоже что нет.
[03:12:39] <gds> таки да, очень вероятно, что не умеет.  Но лично я очень редко пользуюсь подобным (паттерн-матчингом аргументов функции сразу/сходу), поэтому как-то не обращал внимания, тем более, что не использую original syntax особо.  А там какие-то другие проблемы возникли, небось?
[03:12:45] <wolf.ram> В смысле не умеет.
[03:14:05] <wolf.ram> Какие --- другие проблемы?
[03:14:56] <gds> другие проблемы -- например, те, для решения которых это захотелось.
[03:16:12] <wolf.ram> Мне нужно было сортировать список по одному из полей у конструктора элементов списка. Вот я и захотел сразу вытащить это поле при передаче параметров.
[03:17:08] <wolf.ram> Это я в функции сравнения хотел сделать.
[03:21:38] <gds> либо я не понял (это очень даже может быть!), либо думаю, что в таком случае рекомендую отобразить элемент списка на хорошо-сортируемое значение, а затем сравнивать эти значения.  А отображать лучше не в функции сортировки, а в отдельной, типа:
let ordering_on_pos_int_option n = match n with None -> (-1) | Some n -> n
и затем использовать эту функцию в каком-нибудь Pervasives.compare или в чём-то своём.  И вот, использовать эту функцию для приведения к сравнимым значениям (согласно логике сравнения), а затем и сортировать.
[03:24:09] <wolf.ram> Ну да, явно определить функцию сравнения для моего типа данных и отображать уже в ней будет правильней.
[03:25:14] <gds> альтернативой (для моего тупого примера) был бы матчинг вида
match (a, b) with
| (None, None) -> 0
| (Some _, None) -> -1
| (None, Some _) -> 1
| (Some av, Some bv) -> compare_values av bv
но тут число матч-кейсов либо линейно относительно числа конструкторов, и имеем "fragile match" от компилятора (и реальную проблемку на случай расширения), либо квадратично, что как-то не очень ок.
[03:29:25] <wolf.ram> У меня просто :)
Вытянуть 2 char-а и сравнивать уже их.
[03:33:12] <gds> они есть во всех конструкторах?  Тогда, если красиво, то упаковать их в тупл и сравнивать.  Если нужна СКОРАСТЬ, то вызвать над ними функцию, превращающую их в int нужным образом (обычно вида "((c1 lsl 8) lor c2)" плюс-минус преобразования типов).  Но лучше таки в тупл.
[03:34:26] letrec вошёл(а) в комнату
[03:35:03] <wolf.ram> У меня один конструктор.
Вызываю Char.compare.
[03:38:29] wolf.ramovsky вошёл(а) в комнату
[03:38:41] wolf.ram вышел(а) из комнаты: QIP Infium: Спокойное общение
[04:36:19] letrec вышел(а) из комнаты
[05:02:44] wolf.ramovsky вышел(а) из комнаты
[06:54:44] Typhon вышел(а) из комнаты
[06:55:18] Typhon вошёл(а) в комнату
[10:05:38] ftrvxmtrx вышел(а) из комнаты
[10:05:50] Sun][ вошёл(а) в комнату
[10:07:57] superbobry вошёл(а) в комнату
[10:12:11] ermine вошёл(а) в комнату
[10:18:00] dzhon вошёл(а) в комнату
[10:21:56] superbobry вышел(а) из комнаты
[10:35:31] superbobry вошёл(а) в комнату
[10:46:14] superbobry вышел(а) из комнаты
[11:05:44] ftrvxmtrx вошёл(а) в комнату
[11:31:08] <f[x]> > OCaml умеет pattern matching в параметрах fun?
в fun только irrefutable matches
[11:31:46] <f[x]> > У меня один конструктор.
а смысл?
[11:57:38] dzhon вышел(а) из комнаты: Replaced by new connection
[11:57:39] dzhon вошёл(а) в комнату
[12:14:52] Kakadu вошёл(а) в комнату
[12:43:00] dzhon вышел(а) из комнаты
[12:43:06] dzhon вошёл(а) в комнату
[12:44:25] tilarids вошёл(а) в комнату
[13:45:38] dzhon вышел(а) из комнаты
[13:50:36] dzhon вошёл(а) в комнату
[14:10:51] Typhon вышел(а) из комнаты
[14:12:04] Typhon вошёл(а) в комнату
[14:27:38] Typhon вышел(а) из комнаты
[15:09:51] Kakadu вышел(а) из комнаты
[15:24:57] dzhon вышел(а) из комнаты: Replaced by new connection
[15:24:58] dzhon вошёл(а) в комнату
[15:33:25] Typhon вошёл(а) в комнату
[17:00:36] dzhon вышел(а) из комнаты: Replaced by new connection
[17:00:37] dzhon вошёл(а) в комнату
[18:24:30] dzhon вышел(а) из комнаты
[18:24:32] dzhon вошёл(а) в комнату
[18:24:46] letrec вошёл(а) в комнату
[18:25:16] Typhon вышел(а) из комнаты
[18:25:50] Typhon вошёл(а) в комнату
[18:35:05] dzhon вышел(а) из комнаты: Replaced by new connection
[18:35:06] dzhon вошёл(а) в комнату
[19:08:41] ftrvxmtrx вышел(а) из комнаты
[19:10:42] Sun][ вышел(а) из комнаты
[19:25:25] dzhon вышел(а) из комнаты
[19:34:40] Typhon вышел(а) из комнаты
[19:46:12] Kakadu вошёл(а) в комнату
[20:13:11] tilarids вышел(а) из комнаты: Machine going to sleep
[20:27:08] letrec вышел(а) из комнаты
[21:15:36] Kakadu вышел(а) из комнаты
[21:15:52] f[x] уверенно занимает первое место по тэгам ocamlbuild и ocamlfind (и второе по camlp4) на SO. Не знаю радоваться или плакать..
[21:33:11] ludovik вошёл(а) в комнату
[21:33:39] Sun][ вошёл(а) в комнату
[22:00:01] ftrvxmtrx вошёл(а) в комнату
[22:20:13] Sun][ вошёл(а) в комнату
[22:29:38] Sun][ вышел(а) из комнаты
[22:36:08] superbobry вошёл(а) в комнату
[22:45:01] Kakadu вошёл(а) в комнату
[22:52:53] ludovik вышел(а) из комнаты
[23:08:17] ludovik вошёл(а) в комнату
[23:31:55] ludovik вышел(а) из комнаты
[23:33:25] superbobry вышел(а) из комнаты
[23:34:53] tilarids вошёл(а) в комнату
[23:38:32] ludovik вошёл(а) в комнату
[23:55:07] superbobry вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!