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

GMT+4
[00:05:01] ermine вышел(а) из комнаты
[00:13:13] gds вышел(а) из комнаты
[00:23:51] Typhon вышел(а) из комнаты
[00:29:56] ftrvxmtrx вышел(а) из комнаты
[00:34:12] <f[x]> > we discussed the issue, and "fundamental objections" were raised, by those ones who would like to have a multicore runtime soon...
[00:34:34] ftrvxmtrx вошёл(а) в комнату
[01:09:29] Kakadu вышел(а) из комнаты
[01:16:41] komar вышел(а) из комнаты
[01:19:08] komar вошёл(а) в комнату
[01:22:11] dzhon вышел(а) из комнаты
[01:23:33] dzhon вошёл(а) в комнату
[01:24:24] dzhon вышел(а) из комнаты
[01:24:49] dzhon вошёл(а) в комнату
[01:26:54] dzhon вышел(а) из комнаты
[01:27:15] dzhon вошёл(а) в комнату
[01:37:06] dzhon вышел(а) из комнаты
[01:39:15] Typhon вошёл(а) в комнату
[01:41:31] dzhon вошёл(а) в комнату
[01:44:17] <bobry> Typhon: я вспомнил нафига там этот хак -- бсон хочет в начале суммарную длину документа в байтах
[01:44:27] <bobry> которую мы не знаем пока не закодируем документ целиком
[01:51:59] dzhon вышел(а) из комнаты
[01:53:51] dzhon вошёл(а) в комнату
[02:22:14] f[x] вышел(а) из комнаты: Replaced by new connection
[02:22:15] f[x] вошёл(а) в комнату
[02:27:50] dzhon вышел(а) из комнаты
[02:45:00] Typhon вышел(а) из комнаты
[02:46:08] Typhon вошёл(а) в комнату
[02:49:01] Andrey Popp вышел(а) из комнаты
[03:15:48] Typhon вышел(а) из комнаты: Replaced by new connection
[03:16:08] Typhon вошёл(а) в комнату
[03:16:54] <Typhon> bobry: угу, я тут тоже вчера, пока ехал, вспомнил зачем, но интернета под рукой не было, а когда появился — забыл написать уже :-)
[03:26:57] f[x] вышел(а) из комнаты: Computer went to sleep
[03:34:28] letrec вошёл(а) в комнату
[04:18:08] Typhon вышел(а) из комнаты
[04:18:31] Typhon вошёл(а) в комнату
[04:49:50] letrec вышел(а) из комнаты
[05:12:10] bobry вышел(а) из комнаты
[05:12:14] Typhon вышел(а) из комнаты: Replaced by new connection
[05:12:34] Typhon вошёл(а) в комнату
[05:15:29] bobry вошёл(а) в комнату
[07:45:56] ermine вошёл(а) в комнату
[08:46:19] Andrey Popp вошёл(а) в комнату
[09:29:59] Typhon вышел(а) из комнаты
[09:30:27] Typhon вошёл(а) в комнату
[09:40:12] Typhon вышел(а) из комнаты
[09:40:46] Typhon вошёл(а) в комнату
[09:51:02] dzhon вошёл(а) в комнату
[09:56:56] klapaucius вышел(а) из комнаты
[10:17:46] Andrey Popp вышел(а) из комнаты
[10:53:38] Kakadu вошёл(а) в комнату
[11:07:26] bobry вышел(а) из комнаты
[11:45:52] Typhon вышел(а) из комнаты
[11:49:35] dzhon вышел(а) из комнаты: Replaced by new connection
[11:49:37] dzhon вошёл(а) в комнату
[11:55:57] dzhon вышел(а) из комнаты: Replaced by new connection
[11:56:02] dzhon вошёл(а) в комнату
[12:02:14] klapaucius вошёл(а) в комнату
[12:36:07] komar вышел(а) из комнаты: Replaced by new connection
[12:36:14] komar вошёл(а) в комнату
[12:42:29] dzhon вышел(а) из комнаты: Replaced by new connection
[12:42:29] dzhon вошёл(а) в комнату
[12:54:47] dzhon вышел(а) из комнаты
[13:03:38] ftrvxmtrx вышел(а) из комнаты
[13:28:11] gds вошёл(а) в комнату
[13:28:57] gds вышел(а) из комнаты
[13:29:03] gds вошёл(а) в комнату
[13:34:29] <gds> f[x]: про многоядр -- это ты что цитировал?
[13:39:46] dzhon вошёл(а) в комнату
[13:40:50] dzhon вышел(а) из комнаты
[13:41:58] dzhon вошёл(а) в комнату
[13:42:07] <f[x]> live feed из ванной :)
[13:42:20] <f[x]> мантис
[13:42:46] <gds> и чо, будут говнолепить?
[13:43:49] bobry вошёл(а) в комнату
[13:43:59] <bobry> шо шо?
[13:44:44] <f[x]> ну видимо уже
[13:45:13] shaggie вошёл(а) в комнату
[14:18:42] ftrvxmtrx вошёл(а) в комнату
[14:32:21] Typhon вошёл(а) в комнату
[14:32:43] Typhon вышел(а) из комнаты
[14:33:10] Typhon вошёл(а) в комнату
[14:36:58] Typhon вышел(а) из комнаты
[14:37:32] Typhon вошёл(а) в комнату
[14:59:32] <ftrvxmtrx> кто-то помнится хотел недавно тэгов в емаксе для камла
[14:59:57] <ftrvxmtrx> и внезапно otags обновился аж до 3.12.1
[15:14:24] dzhon вышел(а) из комнаты: Replaced by new connection
[15:14:29] dzhon вошёл(а) в комнату
[15:34:05] letrec вошёл(а) в комнату
[15:34:08] letrec вышел(а) из комнаты
[15:34:23] letrec вошёл(а) в комнату
[15:45:24] <bobry> ftrvxmtrx: спасибо за комменты в AUR :)
[15:45:42] <ftrvxmtrx> не за что :)
[16:12:07] <letrec> ftrvxmtrx: я хотел, буду смотреть
[16:14:14] <letrec> что-то то, что нагугливается не похоже на свежее
[16:24:12] <letrec> ftrvxmtrx: http://www.cs.ru.nl/~tews/otags/ оно?
[16:24:33] <ftrvxmtrx> почти
[16:24:51] <ftrvxmtrx> letrec, http://askra.de/software/otags/
[16:25:11] <ftrvxmtrx> если archlinux используешь, то хватит запустить yaourt -S otags
[16:25:53] <letrec> я тороможу, проверил почту и нашёл
[16:26:01] <letrec> не, я на убунте
[16:36:33] <letrec> ('a -> 'b) -> ('a t -> 'b t) полностью эквивалентно ('a -> 'b) -> 'a t -> 'b t?
[16:37:00] <f[x]> да
[16:37:48] <letrec> т.е. оно транслируется в одно и то же во внутреннем представлении при компиляции?
[16:38:26] <gds> это одинаковые типы.
[16:39:17] <gds> стрелка правоассоциативна.  a -> b -> c -> d = a -> (b -> c -> d) = a -> (b -> (c -> d))
[16:39:33] <gds> = a -> b -> (c -> d)
[16:39:56] <letrec> а в каких случаях имеет смысл предпочесть один вариант другому?
[16:40:15] <gds> так они же одинаковые.  В каких случаях нужно ставить скобки в 1 + 2 * 3 ?
[16:41:48] <letrec> т.е. чисто вкусовщина
[16:42:36] <gds> да.  Но если для map -- я бы предпочёл скобки в ('a t -> 'b t), лучше видно кое-что.
[16:43:22] <gds> ну или в bind : ('a -> 'b t) -> ('a t -> 'b t)
[16:47:52] dzhon вышел(а) из комнаты: Replaced by new connection
[16:47:55] dzhon вошёл(а) в комнату
[16:48:19] <letrec> lwt-toplevel -dlambda выводит представление в lambda intermediate language глядя на который по идее можно отвечать на подобные вопросы
[16:48:38] <letrec> только по этому представлению что-то доку не могу найти
[16:48:43] <letrec> никто не видел?
[16:49:21] <f[x]> не документировано
[16:49:24] <f[x]> on purpose
[16:50:51] <letrec> и какая purpose?
[16:51:25] <letrec> чтобы людям было геморнее в другие targets компилить?
[16:51:44] <f[x]> деталь реализации
[16:52:01] <f[x]> те кому это надо - читают исходники
[16:59:06] <gds> я бы не пожелал людям компилить из -dlambda.
[17:02:53] <letrec> Jake Donham вот компилит
[17:14:16] <gds> именно из -dlambda?
[17:28:22] <letrec> он компилятор вроде как похачил и там использует это представление
[17:38:34] <gds> это возможно, но не парсит же он -dlambda.
[17:40:30] <letrec> это было бы маразмом
[17:41:34] <letrec> http://ambassadortothecomputers.blogspot.com/2010/08/ocamljs-03.html
[17:46:22] <gds> кстати вот, может быть и не маразмом, если бы было чуть больше инфы в этом выводе.  как-то лепил патч для выброса TypedTree.  вот было бы оно -- было бы легче лепить бэкэнды.
[17:47:23] <gds> но в том виде, в котором этот патч был -- неюзабельно.  кому нафиг нужно патчить компилятор?  а без этого -- либо camlp4 без типов, либо -dlambda, унылая.
[18:13:47] <gds> а у меня -- очередная гениальная мысль.  Если шелл всё равно нетипизированный, и всё равно там всё будет в строках, то вместо кода http://paste.in.ua/3722/ можно сначала скомпилировать репрезентацию данных -- из t 'a в t shell_repr (или в t string), а потом уже компилировать всё одной функцией, работающей только на строках.
раз уж по-нормальному, со сраной типизацией, не выходит.
[18:20:40] bobry вышел(а) из комнаты
[18:20:43] dzhon вышел(а) из комнаты: Replaced by new connection
[18:20:44] dzhon вошёл(а) в комнату
[18:32:52] <gds> люди хотят Идеальный Язык.  http://udpn.livejournal.com/64349.html
[18:39:43] <Kakadu> ты им про камло уже отписал?
[18:39:56] <gds> нет, он не подходит под требования.
[18:56:53] <letrec> gds: патч это ocamlspotter?
[18:57:05] dzhon вышел(а) из комнаты
[18:59:57] <gds> нет, свой личный, неопубликованный.
[19:03:53] <letrec> ocamlspotter бы в апстрим засунули
[19:04:00] <letrec> здравая же идея
[19:04:15] <letrec> и не должна компилятор усложнять сильно
[19:18:34] <gds> согласен по всем пунктам.
[19:23:53] <letrec> type ('a, 'b) t = 'a * 'b - не компилиццо, а хочется тупл, чтобы был
[19:24:49] <letrec> как сделать в revised syntax нашёл, а в обычном болт
[19:27:00] <f[x]> kidding?
[19:27:40] <letrec> гоню, он на другое жаловался
[19:39:00] <Kakadu> тяжелая артиллерия, цель --- http://ru-lambda.livejournal.com/135293.html !
[19:56:36] <letrec> let map f x = match x with
    | (a, b) -> let (c, e) = f (a, b) in (c, e);;
  val map : ('a * 'b -> 'c * 'd) -> 'a * 'b -> 'c * 'd = <fun>
[19:57:13] <letrec> если результат применения f не деконструировать, то выводилка не понимает, что на выходе пара
[19:57:24] <letrec> что в общем-то логично
[19:57:42] <letrec> как можно ему намекнуть о паре без деконструирования?
[19:57:56] <letrec> явно тип прописать?
[19:58:01] <Kakadu> угу
[19:58:21] <letrec> а ещё есть варианты?
[20:01:08] <letrec> Kakadu: твой вопрос в жж это для производительности?
[20:01:12] komar вышел(а) из комнаты
[20:01:34] <Kakadu> letrec: мне для диплома, нучнику --- для производительности
[20:01:40] <Kakadu> научнику*
[20:03:55] <gds> letrec: а с чего бы выводилка понимала, что там пара?
[20:04:43] <letrec> gds: это я и пытаюсь понять какие есть варианты
[20:05:00] <letrec> gds: ты в cadastr из Amlib копипэйстил?
[20:05:17] <gds> в полиморфном случае, когда всё генерализированно, там не обязана быть пара, судя по коду.  Тебе нужно, чтобы была пара?
[20:05:31] <letrec> да
[20:05:46] <gds> пропиши ограничение в сигнатуре.
[20:05:56] <letrec> у меня же вроде полиморфный случай и есть
[20:06:09] <letrec> и кроме пары там быть ничего не может
[20:06:31] <gds> ну нет же, если без деконструирования, там может быть любой тип.
[20:06:36] <letrec> если убрать деконструирование, то выводится невнятный тип
[20:06:45] <letrec> ага
[20:07:27] <gds> ну и вот.  Из кода выводится этот тип.  Нужен более ограниченный -- ограничь явно, в сигнатуре.  Не будешь тратиться на туда-сюда с туплом.
[20:07:31] <gds> letrec: кое-что копипастил в кадастр, удаляя из amall.  Если вдруг не удалил или коммит задержался локально, это не беда.
[20:10:43] <gds> вообще, в последнее время всё пишу в стиле
value func
: тип
= реализация
;
частные случаи --
value func
= реализация
;
value func
= fun a b c ->
     реализация
;
и это дело, благодаря revised syntax, где везде value, очень хорошо переносится в сигнатуру и обратно, достаточно удалить реализацию / fun ... -> ... .  лёгкость копипаста просто поражающая.
[20:11:07] <letrec> :)
[20:11:20] <letrec> copy paste friendly syntax
[20:12:30] <letrec> gds: у тебя в https://bitbucket.org/gds/cadastr/src/a5143d184447/src/cd_List.ml есть вложенный модуль для монады
[20:12:31] <gds> ну дык да.  Это же частое явление.  Как известно, нет такой проблемы в software engineering, которую нельзя было бы решить копипастой.
Кроме того, удобно cut-paste делать.
[20:12:57] <letrec> оно как-то используется?
[20:16:13] <gds> да, где-то использовал, иначе бы оно там не появилось.  Вроде для перебора некоторых вариантов с сохранением их порядка.
[20:16:43] <gds> точнее, с сохранением порядка результатов перебора.
[20:20:06] <gds> letrec: но даже не думай упрощать реальность.  поверх типа данных list 'a возможна не только одна монада.  ещё, как минимум, две.
[20:22:36] <letrec> я не догоняю один момент - почему монада не объявлена отдельно (как сигнатура), а в списке не реализованы просто необходимые функции? тогда монадный интерфейс можно было бы реализовать ещё где-то и поиметь в другом модуле функции работающие поверх монады без знания что именно за монаду им дали
[20:22:59] <letrec> т.е. есть 2 момента
[20:23:06] <letrec> вынос интерфейса монады
[20:23:24] <letrec> и количество реализаций монады для конкретного типа и место их реализации
[20:24:22] <letrec> и что за 2 дополнительные монады?
[20:25:21] <gds> 1. интерфейс монады определён в кадастре.  учитывая, что кадастр нужен для amall и по другим причинам, не счёл нужным объявлять два интерфейса.
[20:26:14] <letrec> module Monad : MONAD with type t 'a = list 'a в списке это и есть это самое определение?
[20:26:30] <letrec> туплю
[20:26:41] <letrec> это реализация
[20:27:02] <gds> 2. монад поверх list 'a можно настроить много.  сходу, вдобавок к классической, возможны "множество значений 'a, хранимых в list 'a, без учёта порядка", "множество значений 'a без учёта порядка и уникальных" (то есть, multiset и set из значений 'a, реализованных как list 'a).  ещё можно тривиальных монад налепить, которые будут отображать всё в [], но это неинтересно.
[20:27:16] <gds> определение MONAD -- в https://bitbucket.org/gds/cadastr/src/a5143d184447/src/cd_Types.ml
[20:28:49] <letrec> а есть модуль оперирующий монадами?
[20:30:34] <gds> можно было бы сделать, если бы было нужно.  В некоторых задачах было нужно, делал функтор над монадой и над функтором, например.  Можно также сделать трансформеры (правда, мне они противны).  А так -- любой функтор, берущий манатку, оперирует ею.  Ну и никто не мешает сделать "open List.Monad" и использовать там все нужные функции.
[20:31:11] <f[x]> да, fr.inria.caml.MonadManagerFactory.DefaultMonadManager
[20:32:18] <letrec> f[x]:  и конфигурить в XML'е
[20:33:52] <f[x]> сохранённом в бинарном блобе в реестре по указанному в Customer Application Manual'е CLSID
[20:35:09] <gds> letrec: http://gds.livejournal.com/59484.html
[20:50:34] <letrec> интересный пост
[20:50:41] <letrec> пиши ещё
[20:52:10] <gds> собственно, это про применение монад.  А так -- собрал более-менее интересное в http://camlunity.ru/gds_posts.html
[20:52:41] ftrvxmtrx вышел(а) из комнаты
[20:54:48] <gds> кстати, те же итераты построены поверх монады, вот там серьёзно используется это.  Вплоть до того, что разные нотации для разных bind'ов.
[21:05:00] Typhon вышел(а) из комнаты
[21:09:12] Andrey Popp вошёл(а) в комнату
[21:24:13] Andrey Popp вышел(а) из комнаты
[21:24:38] Andrey Popp вошёл(а) в комнату
[21:24:45] Andrey Popp вышел(а) из комнаты
[21:25:23] letrec вышел(а) из комнаты
[21:29:58] f[x] вошёл(а) в комнату
[21:32:57] bobry вошёл(а) в комнату
[21:56:39] komar вошёл(а) в комнату
[22:04:50] Typhon вошёл(а) в комнату
[22:06:21] komar вышел(а) из комнаты
[22:17:30] Typhon вошёл(а) в комнату
[22:29:04] shaggie вышел(а) из комнаты
[22:39:38] Typhon вышел(а) из комнаты
[23:01:08] Andrey Popp вошёл(а) в комнату
[23:03:00] <Andrey Popp> http://www.quora.com/What-are-your-horror-stories-about-Russia
[23:03:09] <Andrey Popp> oops, не туда, сорри
[23:03:12] dzhon вошёл(а) в комнату
[23:05:36] komar вошёл(а) в комнату
[23:22:56] komar вышел(а) из комнаты
[23:27:46] ermine вышел(а) из комнаты
[23:55:28] komar вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!