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

GMT+4
[00:02:08] Kakadu вошёл(а) в комнату
[00:03:11] <myxomop87> что-то я не пойму как каринг работает или нет:
# let percent max v = v / max * 100;;
val percent : int -> int -> int = <fun>
# let pct = percent 200;;
val pct : int -> int = <fun>
НУЛИ?
# pct 5;;
- : int = 0
# pct 100;;
- : int = 0
[00:03:56] <zert> /.
[00:04:36] <zert> ну и значения float
[00:04:38] <Kakadu> и ещё *.
[00:04:40] <zert> да
[00:05:46] <myxomop87> а, вот как
[00:05:47] <komar> # 5 / 200;;
- : int = 0
[00:06:07] <myxomop87> эх, он хотябы ругнулся чтоли
[00:06:19] <myxomop87> угу понятно, спасиб :)
[00:06:28] <zert> дык на что ругаться?
[00:06:30] <zert> всё ж верно :)
[00:06:43] <komar> Пять целоделить на двести равно нулю.
[00:06:48] <zert> хотя да, отдельные операции для интов и флоатов — напрягає
[00:07:01] <komar> Х-ль.
[00:07:02] <myxomop87> ок
[00:25:16] <myxomop87> кстати нельзя в if использовать слово as ?
например if Hastabl.mem (Mymodule.a bcd) b as myvar then print myvar;
[00:25:32] <myxomop87> че-то не пропускает, а было бы круто
[00:25:57] <myxomop87> получается теперь надо дублировать длинный запрос в Hastable
[00:26:12] <myxomop87> ну или выносить, что тоже не круто :)
[00:26:55] <komar> Выноси.
[00:27:47] <komar> А впрочем, нафига? myvar все равно ничем кроме true не будет.
[00:27:56] <komar> then print true
[00:28:11] <myxomop87> да, туплю, здесь будет true
[00:28:30] <myxomop87> но в теории иожет быть и что-то позабористей
[00:29:47] <komar> В if не может быть ничего кроме true и false.
[00:30:08] <komar> А там где может, то называется паттерн-матчингом.
[00:33:23] Typhon вошёл(а) в комнату
[00:36:48] <myxomop87> э.. еще нубский вопрос, например в перле можно сделать примерно так: a = '123'; obj->$a т.е. подставить переменную как имя метода, тут можно также исполнить ?
[00:36:56] <myxomop87> ну или типа рефлекшена что-нить
[00:37:44] <komar> С метапрограммированием в окамле довольно хреново.
[00:39:43] <myxomop87> да  уж, многовато ложек дегтя :)
[00:39:48] <Typhon> "как в перле" обычно сопровождается "мы не будем делать" i.e.: что?!?!?! дурацкая фича! мы не будем делать как в перле!
[00:40:31] Kakadu вышел(а) из комнаты
[00:40:32] <myxomop87> ээ.. ну это не только как в перле, все современные языки умеют это :)
[00:44:56] <komar> myxomop87: твой метод из переменной немного не сходится с той философией, которую авторы думали, когда делали все остальные фитчи окамла.
[00:46:01] <myxomop87> угу, это понятно
[00:49:12] <ygrek> если ты придумаешь какэ то типизировать - тогда ок
[00:49:25] <ygrek> если константа известна в compile-time то легко
[00:52:16] <myxomop87> уже кстати придумали, в F#, жаль что он привязан к net
[00:52:55] ermine вышел(а) из комнаты
[00:54:49] <Typhon> в фшарпе, по слухам, какое-то решето, вместо типизации
[00:55:03] <Typhon> емнип, кто-то в чятике нарывался на грабли и репортил даже
[00:55:49] <ygrek> имхо там "придумали" introspection + нечто camlp4-подобное
[01:11:58] myxomop87 вышел(а) из комнаты
[01:15:26] ygrek вышел(а) из комнаты
[01:17:57] <komar> Как говорил один мой кореш, «один лисп нормальный язык — для него никто не додумался препроцессор сделать».
[01:26:42] myxomop87 вошёл(а) в комнату
[01:29:42] Typhon вышел(а) из комнаты: Replaced by new connection
[01:29:45] Typhon вошёл(а) в комнату
[01:29:58] Typhon вышел(а) из комнаты
[01:30:15] Typhon вошёл(а) в комнату
[01:30:16] Typhon вышел(а) из комнаты
[01:31:03] Typhon вошёл(а) в комнату
[01:32:37] Typhon вышел(а) из комнаты: Replaced by new connection
[01:32:40] Typhon вошёл(а) в комнату
[01:32:56] Typhon вышел(а) из комнаты
[01:33:12] Typhon вошёл(а) в комнату
[01:37:58] Typhon вышел(а) из комнаты: Replaced by new connection
[01:38:01] Typhon вошёл(а) в комнату
[01:38:13] Typhon вышел(а) из комнаты
[01:39:19] Typhon вошёл(а) в комнату
[01:41:21] Typhon вышел(а) из комнаты: Replaced by new connection
[01:41:24] Typhon вошёл(а) в комнату
[01:41:36] Typhon вышел(а) из комнаты
[01:42:00] Typhon вошёл(а) в комнату
[01:45:26] Typhon вышел(а) из комнаты: Replaced by new connection
[01:45:29] Typhon вошёл(а) в комнату
[01:45:42] Typhon вышел(а) из комнаты
[01:46:05] Typhon вошёл(а) в комнату
[01:47:40] Typhon вышел(а) из комнаты: Replaced by new connection
[01:47:43] Typhon вошёл(а) в комнату
[01:47:59] Typhon вышел(а) из комнаты
[01:48:26] Typhon вошёл(а) в комнату
[01:50:33] Typhon вышел(а) из комнаты: Replaced by new connection
[01:50:36] Typhon вошёл(а) в комнату
[01:50:48] Typhon вышел(а) из комнаты
[01:51:10] Typhon вошёл(а) в комнату
[01:52:44] Typhon вышел(а) из комнаты
[01:52:55] Typhon вошёл(а) в комнату
[01:53:03] Typhon вышел(а) из комнаты
[01:53:29] Typhon вошёл(а) в комнату
[01:56:24] Typhon вышел(а) из комнаты: Replaced by new connection
[01:56:27] Typhon вошёл(а) в комнату
[01:56:38] Typhon вышел(а) из комнаты
[01:56:52] Typhon вошёл(а) в комнату
[01:58:48] Typhon вышел(а) из комнаты: Replaced by new connection
[01:58:51] Typhon вошёл(а) в комнату
[01:59:02] Typhon вышел(а) из комнаты
[01:59:21] Typhon вошёл(а) в комнату
[01:59:48] Typhon вышел(а) из комнаты
[02:00:58] Typhon вошёл(а) в комнату
[02:01:11] Typhon вышел(а) из комнаты
[02:01:39] Typhon вошёл(а) в комнату
[02:32:17] komar вышел(а) из комнаты
[03:07:00] Typhon вышел(а) из комнаты
[03:12:45] zert вышел(а) из комнаты
[03:21:36] serp256 вошёл(а) в комнату
[03:42:11] serp256 вышел(а) из комнаты
[03:51:17] myxomop87 вышел(а) из комнаты
[06:03:40] f[x] вышел(а) из комнаты
[08:45:51] iNode вошёл(а) в комнату
[09:07:05] gds вошёл(а) в комнату
[09:36:39] ermine вошёл(а) в комнату
[10:05:56] ygrek вошёл(а) в комнату
[10:06:11] ygrek вышел(а) из комнаты
[10:06:35] ygrek вошёл(а) в комнату
[10:15:26] Typhon вошёл(а) в комнату
[10:21:56] f[x] вошёл(а) в комнату
[10:25:23] ygrek вышел(а) из комнаты: Replaced by new connection
[10:25:25] ygrek вошёл(а) в комнату
[10:55:05] ʇsʎɯ вошёл(а) в комнату
[11:51:14] komar вошёл(а) в комнату
[11:58:11] arhibot вошёл(а) в комнату
[12:06:31] arhibot вышел(а) из комнаты
[12:08:48] komar вышел(а) из комнаты
[12:13:09] komar вошёл(а) в комнату
[12:21:45] zert вошёл(а) в комнату
[12:37:00] ygrek вышел(а) из комнаты
[12:50:41] arhibot вошёл(а) в комнату
[12:58:36] Kakadu вошёл(а) в комнату
[13:00:11] <Kakadu> Про подставы F# возможно стоит гворить поподробнее
[13:00:56] <Kakadu> Просто у меня наверное, будет возможность донести до слушателей Истину Функционального Программирования в рамках доклада про F#
[13:01:09] <Kakadu> Я не знаю, стоит ли с этим связываться
[13:01:30] <Kakadu> zert: Как, кстати, твой доклад прошел 2 октября?
[13:01:37] <Typhon> известно же, что Истина ФП только через haskell доносить можно и приседания со штангой
[13:02:19] <Kakadu> Typhon:  это хаскелистам это известно
[13:05:09] <ʇsʎɯ> приседания со штангой с декларацией исходников Parsec по ролям
[13:05:34] <ʇsʎɯ> когда начнёте задирать попу, на вас снизойдёт истина
[13:05:48] <Kakadu> сарказм?
[13:06:05] <ʇsʎɯ> [сарказм]
[13:06:19] <Kakadu> ура,  я умею распозновать сарказм
[13:06:25] <ʇsʎɯ> а что не так с F#?
[13:06:38] <ʇsʎɯ> [не сарказм]
[13:06:55] <Kakadu> я не шарю
[13:07:17] <ʇsʎɯ> погоди
[13:07:32] <ʇsʎɯ> а выше там что было?
[13:07:38] <ʇsʎɯ> про подставы F#?
[13:08:08] <Typhon> там было "по слухам" %)
[13:08:22] <Kakadu> черт
[13:08:31] <Kakadu> а я так хотел обосрать F#
[13:28:52] <gds> а что, для того, чтобы обосрать что-то, должны быть объективные аргументы?  Это же интернет, тут это не требуется.
[13:29:45] <ʇsʎɯ> да я не обсирание хотел услышать
[13:29:50] <ʇsʎɯ> а какие-то адекватные вещи
[13:30:36] <ʇsʎɯ> говорят CLR не заточена на выделене/gc памяти в смысле FP, и из-за этого там какие-то провалы в производительности
[13:33:35] <gds> тоже слышал такое, про мелкие и коротко-живущие объекты.  слух переходит в категорию "две бабки сказали".
[13:41:40] arhibot вышел(а) из комнаты
[13:42:07] arhibot вошёл(а) в комнату
[13:47:35] <f[x]> ну в .net 4 обс пилили gc как раз пож этот usecase
[13:49:07] <f[x]> type inference в f# с сюрпризами (был когда я его использовал по крайней мере), но к этому привыкаешь, больше типов надо указывать явно, с другой стороны больше полиморфизма
[13:49:29] <f[x]> с третьей стороны этот полиморфизм + inline -> не type-safe
[13:49:56] <f[x]> но это всё давно было я уже детали не помню и может уже изменилось
[13:50:53] arhibot вышел(а) из комнаты
[13:51:34] <Typhon> зефиров еще ругался на систему типов, но хз нормальный ли он источник информации %)
[14:01:08] gds вышел(а) из комнаты
[14:01:18] gds вошёл(а) в комнату
[14:02:13] <f[x]> ну null там есть, так что можно смело ругаться :)
[14:03:39] <gds> я слегка шокирован.
value (myfun : mytype 'a -> unit) =
  let (myfun2 : othertype 'a -> unit) = ...
  in ... ;
оказывается, оно унифицирует 'a друг с другом в данном определении.
[14:09:39] <gds> получается, надо следить за каждой типовой переменной в пределах top-level value.
[14:11:48] <komar> Typhon: он в системах типов шарит.
[14:12:37] <f[x]> > In general the scope of a named type variable is the whole enclosing definition; and they can only be generalized when leaving this scope.
[14:12:45] f[x] пытается понять это оно или нет?
[14:15:56] <gds> это вроде те, которые fun (type t) -> .., а у меня просто типовые переменные, которые уже "генеральнее некуда".
С другой стороны, ты навёл на мысль и я проверил: фокус вида value (myfun : mytype _ -> unit) = ...  таки работает, и "_" друг с другом не унифицируются.  Т.е. проблема решена.  Но вообще удивлён.
[14:17:24] <gds> то есть, мне это нужно было для того, чтобы задать "форму" типа, наподобие "list _" или "iteratee char ((list string * _) * (_ * string))".
[14:18:01] <gds> кстати, забавно выглядит тип (_*_).  Тупл двух любых типов, ясное дело.
[14:18:31] <ʇsʎɯ> жёппа
[14:18:37] arhibot вошёл(а) в комнату
[14:18:46] <ʇsʎɯ> надо так писать (_ * _)
[14:18:51] <ʇsʎɯ> американский вариант
[14:19:11] <gds> тут смотря кто какую любит.
[14:20:16] <ʇsʎɯ> разумеется
[14:20:35] <ʇsʎɯ> я сначала подумал, что (_ * _) не будет похоже
[14:20:40] <ʇsʎɯ> ан нет, похоже
[14:20:56] <Typhon> http://hyperpolyglot.org/ml
[14:45:57] arhibot вышел(а) из комнаты
[15:14:55] <f[x]> gds: 9.4, там про 'a именно
[15:16:39] <gds> шоке.
[15:57:05] gds вышел(а) из комнаты: Replaced by new connection
[15:57:07] gds вошёл(а) в комнату
[17:12:01] iNode вышел(а) из комнаты
[17:25:46] arhibot вошёл(а) в комнату
[17:31:22] gds вышел(а) из комнаты
[17:47:21] fffetish вошёл(а) в комнату
[18:19:30] gds вошёл(а) в комнату
[18:29:59] arhibot вышел(а) из комнаты
[18:41:18] Kakadu вышел(а) из комнаты
[19:01:55] serp256 вошёл(а) в комнату
[19:02:02] serp256 вышел(а) из комнаты
[19:08:01] gds вышел(а) из комнаты: Replaced by new connection
[19:08:03] gds вошёл(а) в комнату
[19:35:37] gds вышел(а) из комнаты
[19:42:11] gds вошёл(а) в комнату
[19:44:46] ʇsʎɯ вышел(а) из комнаты
[19:54:53] Typhon вышел(а) из комнаты
[19:56:24] fffetish вышел(а) из комнаты: Logged out
[20:37:36] komar вышел(а) из комнаты
[20:48:41] ygrek вошёл(а) в комнату
[21:06:55] Kakadu вошёл(а) в комнату
[21:09:44] <gds> постепенно кошерирую емакс.  Понял, что вместо M-x up enter enter C-x ` можно сделать какое-нибудь (global-set-key [f5] 'recompile) и настроить "идти к первой ошибке".
Вообще, кто какие штуки в емаксе для окамла использует?  Интересны именно возможности, а не конкретные программы / хоткеи.
[21:10:51] ygrek использует aptitude install emacs- vim+
[21:11:50] <gds> хорошая возможность, учту.  Но учитывая, сколько я в первый раз искал культурный выход из vi...  А сколько учился вставлять ("i") символы...
[21:13:02] <Kakadu> лично я в емаксе не смог соилить больше чес C-c C-c
[21:13:25] <Kakadu> C-c TAB какойто идиотский
[21:13:43] <Kakadu> scan definitions не всегда работает
[21:14:10] <Kakadu> мне даже жебажить приятней в консольке
[21:14:14] <Kakadu> дебажить*
[21:14:30] <Kakadu> а ещё приятней, вообще не дебажить)
[21:22:10] Kakadu замечтался
[21:24:08] <gds> не, реально, приятней :)  Я вот не дебажу уже долгие годы, максимум отладочную печать ставлю.
[21:27:09] ygrek вышел(а) из комнаты
[21:27:36] ygrek вошёл(а) в комнату
[21:46:59] komar вошёл(а) в комнату
[21:47:42] komar сегодня дебажил.
[21:47:51] <komar> Надо ж как-то эти гребаные исключения искать.
[21:49:38] Typhon вошёл(а) в комнату
[21:51:33] <Typhon> gds, taureg-mode со своими велосипедами %) http://bitbucket.org/little_arhat/confs/src/tip/.emacs.d/load/pl_init.el ну и там рядом всякие другие настройки
[22:01:05] arhibot вошёл(а) в комнату
[22:10:12] <Typhon> *tuareg, конечно
[22:27:29] <Kakadu> фраза `Thanks for the "bug" report.` таит в себе сарказм, или у меня паранойя?
[22:28:38] <gds> я бы почуял именно сраказм.
[22:29:29] Kakadu теперь будет косо смотреть на pfff
[22:29:36] <zert> паранойя
[22:29:52] <zert> нормальные разработчики любят, когда им забивают баги
[22:30:15] <zert> ибо таким образом им оказывается помощь в тестировании
[22:30:38] <Kakadu> ясон
[22:30:40] <Kakadu> ясно
[22:33:32] <gds> если баг зло...чий, то может и не рады.  Или если баг оказался не багом, а недопониманием чего-то важного, что разработчик кагбэ хотел вам сказать.
[22:34:07] <Kakadu> тут скорее всего было недопонимание
[22:34:27] <komar> Все равно нехорошо в кавычки брать.
[22:34:49] <komar> Багрепортирующему обычно самостоятельно стыдно становится.
[22:35:06] <komar> Короче, выговор автору с записью в дневник.
[22:35:46] <Kakadu> мне вежливо объяснили что парсер С++ очень умным не бывает
[22:36:26] <Kakadu> и завели страничку в вики про мой баг) http://github.com/facebook/pfff/wiki/Preprocessor
[22:36:41] <Kakadu> Чую я что надо будет выкинуть LLVM и поковырять ещё yacfe
[22:36:43] <komar> Вот мы, например, о багах не репортим, мы их эксплуатируем.
[22:36:56] <komar> И авторам потом становиться очень плохо.
[22:37:11] <Kakadu> а что значит эксплуатируем?
[22:39:47] <komar> Хакиры, епты.
[22:40:43] <Typhon> хакиры в канале, get in the car!
[22:40:47] Typhon боится
[22:42:24] <Kakadu> пока сишники пиарились своим си, камлисты тихо сидели и писали Зевса
[22:42:33] <komar> Да не, я в этом не шарю.
[22:42:37] <komar> У меня своя часть.
[23:26:14] gds вышел(а) из комнаты
[23:48:47] <ygrek> ух ты, там бумажка есть отдельная про Parsing C/C++ Code without Pre-processing
[23:51:26] <Typhon> а зачем without preprocessing?
[23:51:37] <Typhon> я наоборот делал парсер с препроцессором для си :-)
[23:53:51] <ygrek> с препроцессингом не так интересно
[23:54:02] <ygrek> теряется семантическая информация
[23:54:19] <ygrek> hence: coccinelle <=> semantic patches
[23:54:49] <ygrek> btw, http://flyingfrogblog.blogspot.com/2010/10/can-you-repro-this-64-bit-net-gc-bug.html
[23:55:37] <ygrek> Typhon: и как - сделал? парсил?
[23:55:45] abiogenesis вошёл(а) в комнату
[23:55:51] <Typhon> парсю, кодгенерю (питон правда :/ )
[23:56:07] <Typhon> (на окамель тут не удалось уломать )
[23:56:33] <ygrek> произвольный си?
[23:56:43] <ygrek> а зачем свой парсер - проще чем взять готовый было?
[23:59:31] <arhibot> а не напомните сайт, где были реализации всяких простеньких языков на ocamllex+ocamlyacc?
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!