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

GMT+3
[00:01:17] sevenov вышел(а) из комнаты: Replaced by new connection
[00:01:18] sevenov вошёл(а) в комнату
[00:19:40] <sceptic> http://martin.jambon.free.fr/extend-ocaml-syntax.html бойан?
[00:20:15] sevenov вышел(а) из комнаты
[00:27:04] <ygrek> да, один из трёх (?) источников инфы по старому camlp4
[00:45:44] sevenov вошёл(а) в комнату
[00:59:05] ygrek вышел(а) из комнаты
[00:59:36] sevenov вышел(а) из комнаты
[00:59:45] sevenov вошёл(а) в комнату
[01:05:09] ermine вышел(а) из комнаты
[04:31:34] Typhon вышел(а) из комнаты
[08:37:21] iNode вошёл(а) в комнату
[10:06:27] ygrek вошёл(а) в комнату
[10:06:41] ygrek вышел(а) из комнаты
[10:06:54] ygrek вошёл(а) в комнату
[10:08:45] Kakadu вошёл(а) в комнату
[11:18:51] sevenov вышел(а) из комнаты
[11:19:32] sevenov вошёл(а) в комнату
[11:34:58] ermine вошёл(а) в комнату
[12:06:35] sceptic вышел(а) из комнаты
[12:06:47] sceptic вошёл(а) в комнату
[12:25:21] sceptic вышел(а) из комнаты
[12:25:36] sceptic вошёл(а) в комнату
[13:16:14] <Kakadu> type a = A of int | B of string;;
type op = BinOp of a*a;;
let x = BinOp(A 1, B "2");;
match x with
| BinOp (u,v) when (u=(A _)) -> true (*ругается на подчеркивание.*)
| _-> false;;
[13:16:26] <Kakadu> почему так нельзя писать?
[13:17:11] <gds> when требует выражения, вычисляющегося в булевое значение, а не паттерн-матчинга.
[13:17:30] <gds> | BinOp (A_, v) -> true
[13:17:40] <Kakadu> нет, так я умею
[13:17:41] <gds> точнее,
| BinOp (A _, v) -> true
[13:17:53] <sevenov> > нет, так я умею
:))
[13:18:05] <Kakadu> а если у меня сложные структуры данных?
[13:18:39] <Kakadu> у меня тут такая задача
[13:18:56] <gds> тогда
| BinOp(u,v) when (match u with A _ -> true | _ -> false) -> true
как-то так
[13:19:24] <Kakadu> ага...
[13:19:39] <gds> но не советую идти на такие извращения.
[13:21:53] <ygrek> when вычисляет выражение (expression), pattern match это не выражение - у него нет значения
[13:22:35] <ygrek> грубо говоря в языке две основных конструкции - выражения и связывание выражения с именами
[13:55:31] <Kakadu> http://community.livejournal.com/ru_lambda/111461.html
я запостил. Может найдется решение как написать всё это красиво без извращений с when'ами
[14:04:35] <Kakadu> ааааааааааааааааааааааа
Fatal error: exception Stack_overflow
так можно и не сделать курсовую мне)
[14:05:23] <gds> отписал туда самое очевидное, что придумалось сходу.
[14:10:41] <gds> а если про реализацию приоритетов на окамле -- можно в функцию fip_to_pretty_string передавать приоритет объемлющего выражения, затем в функции считать приоритет текущего выражения, и, если он меньше-равен, то выводить в скобках результат рекурсивного вызова этой же функции с тем же выражением, но с самым низким приоритетом (чтобы любые выражения выводились без скобок, т.к. скобки уже добавили).
[14:14:44] animist вышел(а) из комнаты
[14:15:57] animist вошёл(а) в комнату
[14:18:03] <gds> хуже, если нужно учитывать ассоциативность. (а если есть "A AND B AND C", то точно нужно)
Сходу не соображу, но смысл тот же: в зависимости от ассоциативности и от того, с какой стороны от инфиксного оператора мы выводим текущее выражение, определяем, ставить или не ставить скобки. Например, деление лево-ассоциативное, поэтому, если выводим выражение "a / b", и "a" тоже деление, то скобки вокруг "a" не обязательны, а если "b" является делением, то вокруг "b" обязательны.
[14:26:13] <gds> о, там в каментах Сам Гуру тоже на основании приоритетов советует разруливать. Значит это единственно правильный путь. :]
[14:58:30] sceptic вышел(а) из комнаты
[15:09:29] sceptic вошёл(а) в комнату
[16:13:45] wolf.ram вошёл(а) в комнату
[16:14:48] wolf.ram вышел(а) из комнаты: QIP Infium: Спокойное общение
[16:36:07] iNode вышел(а) из комнаты
[16:38:34] iNode вошёл(а) в комнату
[17:15:34] sceptic вышел(а) из комнаты: Replaced by new connection
[17:15:39] sceptic вошёл(а) в комнату
[20:01:44] aloner2k вошёл(а) в комнату
[20:02:33] aloner2k вышел(а) из комнаты
[20:10:21] Mon вышел(а) из комнаты
[20:10:25] Mon вошёл(а) в комнату
[20:10:39] aloner2k вошёл(а) в комнату
[20:20:55] Mon вышел(а) из комнаты
[20:21:02] Mon вошёл(а) в комнату
[20:25:44] Mon вышел(а) из комнаты
[20:25:57] Mon вошёл(а) в комнату
[20:26:08] Mon вышел(а) из комнаты
[20:26:17] Mon вошёл(а) в комнату
[20:54:50] Mon вышел(а) из комнаты
[20:54:56] Mon вошёл(а) в комнату
[21:32:37] aloner2k вышел(а) из комнаты
[22:52:02] Mon вышел(а) из комнаты
[22:52:11] Mon вошёл(а) в комнату
[22:54:55] Mon вышел(а) из комнаты
[22:55:08] Mon вошёл(а) в комнату
[23:08:40] Mon вышел(а) из комнаты
[23:08:52] Mon вошёл(а) в комнату
[23:13:11] Kakadu вышел(а) из комнаты
[23:54:13] ygrek вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!