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

GMT+4
[00:02:33] sc_2i7lacy232_a вошёл(а) в комнату
[00:02:51] sc_2i7lacy232_a вышел(а) из комнаты
[01:57:52] iNode вошёл(а) в комнату
[01:58:19] rut-user вошёл(а) в комнату
[01:58:48] rut-user вышел(а) из комнаты
[02:50:54] <olegfink> komar, не потсь без письменного разрешения!11
[02:53:04] <komar> Э-э, чё?
[02:55:40] <olegfink> эксклюзивным правом публикации материалов этого чатика обладает chatlogs.j.r, и не надо постить ерунду отсюда куда попало, пожалуйста.
[02:56:42] <komar> А сюда, значит, можно?
[02:57:42] <olegfink> приходится.
[09:50:55] Typhon вышел(а) из комнаты
[10:38:14] Kakadu вошёл(а) в комнату
[11:23:07] Typhon вошёл(а) в комнату
[11:23:58] gds вошёл(а) в комнату
[11:53:00] Kakadu вышел(а) из комнаты
[12:03:18] jlwlnxhmaux_hx вошёл(а) в комнату
[12:03:23] jlwlnxhmaux_hx вышел(а) из комнаты
[13:17:51] qw0o805j_nn вошёл(а) в комнату
[13:17:56] qw0o805j_nn вышел(а) из комнаты
[14:24:49] ygrek вошёл(а) в комнату
[15:35:36] <ygrek> PR#4831 кул
[16:12:07] <gds> а что, stdlib так часто меняется, что нужно @since?
[16:12:24] <ygrek> ну тем не менее
[16:12:39] <ygrek> какие-то функции добавляются
[16:14:03] <ygrek> btw, все в курсе что камло самый популярный рабочий и лаконичный язык судя по результатам конкурса пфп?
[16:16:04] <Typhon> из 13 (или сколько там) присланых заданий можно кучу разных выводов навыводить, да :) этот мне нравится
[16:16:45] <ygrek> :)
[16:18:54] <gds> в смысле, было 2 решения на окамле и по 1 на остальных?  Да, вдвое популярнее :)
[16:19:34] <ygrek> не вдвое, а на порядок
[16:19:49] <gds> на двоичный, согласен.
[16:20:06] <ygrek> ну все же грамотные люди, к чему эти низменные детали
[16:28:34] <gds> согласен.
мне вот ещё интересно, почему в http://ocaml.janestreet.com/?q=node/71 аффтар не догадался/попытался сделать очевидную оптимизацию -- слить Array.map + Array.to_list.
почему интересуюсь -- потому что пишу, представьте себе, List.map :)  Ну, Cyclist.map.  Хочется, кроме поддержки циклических списков позаимствовать ещё прелести extlib'овского ExtList -- хвосторекурсивность всех функций.  Сейчас код строит список ровно так, как это делает ExtList.map, и думаю вот, не является ли это чем-то плохим в плане производительности.  С другой стороны, идти по списку, маппить и считать до какого-то предела -- на вид плохой вариант, так как список потенциально циклический, и алгоритм превратится в [ещё более] уродливую тыкву.
[16:44:50] <gds> рассмотрим List.map2.  Случаи, когда подают списки разной длины, считаются ошибкой.  Интересно, почему сделали именно так, вместо отображения списков по длине короткого списка?  Конечно, оба подхода имеют право на жизнь, я тут ничего не говорю.
[16:48:49] <Typhon> что-то на тему "Errors should never pass silently." может? false negatives и все такое
[16:53:12] <gds> это да, во многих алгоритмах подавать списки разной длины для {map,iter,fold*}2 -- явная ошибка, которую надо словить как можно раньше.
[16:55:00] <olegfink> в хаскеле, например, где не очень понятно, что такое длина списка, все подобные функции, естественно, принимают списки любой длины
[16:55:33] <Typhon> "посмотри как и сделай наоборот" ^_^
[16:56:31] <gds> гы
ну в хаскеле тоже можно вычислять@разрушать списки до появления конструктора Nil, там тоже один из списков может кончиться внезапно.
[16:58:15] <gds> как я понимаю, разное поведение в таких функциях в обоих вариантах (выдавать ошибку vs брать по более короткому списку) есть смысл "прописывать" только в конце, когда один список уже кончился, а другой ещё нет, чтобы избежать вызова List.length на обоих списках перед вызовом функции.
[17:00:50] <gds> посмотрю как и сделаю опционально, вот что я придумал.  Опциональные аргументы есть же.  Обрабатывать их там же, в конце.  ?(by_short_list=False) для выдачи ошибки (для классического поведения) и ~by_short_list=True для обработки списков по короткому.
Только не нравится "by_short_list".  "shortest" как-то не символизирует.  Если идея нормальная, подскажите, как бы обозвать.
[17:01:34] <ygrek> strict
[17:02:15] ygrek вышел(а) из комнаты
[17:02:53] <Typhon> gds:
let x = fun y z -> print_string "oops";y;;
List.map2 x [1] [1; 2];;
oopsException: Invalid_argument "List.map2"
если функция с сайд эффектами (внезапно) то такое поведение, по мне, не очень желательно
[17:04:05] ygrek вошёл(а) в комнату
[17:04:17] ygrek вышел(а) из комнаты
[17:04:19] ygrek вошёл(а) в комнату
[17:05:47] <gds> если функция с сайд-эффектами, то в идеале нужно сперва проверить длину списка, а затем уже делать List.map2.  Если я неправильно понял мысль, уточни.
[17:06:54] <Typhon> да, я это имел ввиду, с другой стороны, нефиг пихать с сайд эффектами функцию в map.
[17:15:17] <gds> да, с сайд эффектами почти всегда будут кизяки, когда их с функциональщиной скрещивают.  Поэтому ещё подумаю, но, кажется, сделаю опциональный аргумент ?strict=true.  В случае ~strict:true циклические списки не будут сопрягаемы с линейными в функциях map2/iter2/fold_*2 (raise Different_list_size), а в случае ~strict:false результат будет равен длине линейного списка.
[17:43:27] npoektop вошёл(а) в комнату
[17:44:26] komar вышел(а) из комнаты
[18:59:26] gds вышел(а) из комнаты
[19:01:06] mutant вошёл(а) в комнату
[19:08:04] <mutant> доброго времени суток знатокам
[19:08:32] <mutant> вопрос: какое самое популярное средство для численных расчетов?
[19:08:45] <mutant> желательно с семантикой а-ля octave
[19:12:04] <mutant> скажем так, аналог matlab/octave'а или numpy(если кому-нибудь это о чем-нибудь говорит)
[19:20:47] <ygrek> биндинги к gsl
[19:22:41] <mutant> логично, btw
[19:59:24] Typhon вышел(а) из комнаты
[20:06:44] npoektop вышел(а) из комнаты
[20:12:31] gds вошёл(а) в комнату
[20:21:07] mutant вышел(а) из комнаты
[21:08:18] Typhon вошёл(а) в комнату
[22:09:48] ulgen вошёл(а) в комнату
[22:56:35] npoektop вошёл(а) в комнату
[23:58:54] kpierre вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!