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:42:20] komar вышел(а) из комнаты: Replaced by new connection
[00:42:21] komar вошёл(а) в комнату
[01:20:22] Kakadu вышел(а) из комнаты
[01:33:45] komar вышел(а) из комнаты
[01:35:14] komar вошёл(а) в комнату
[01:45:33] Typhon вошёл(а) в комнату
[01:45:49] bobry вышел(а) из комнаты
[02:41:08] Typhon вышел(а) из комнаты: Replaced by new connection
[02:41:28] Typhon вошёл(а) в комнату
[03:16:53] Typhon вышел(а) из комнаты: Replaced by new connection
[03:16:56] Typhon вошёл(а) в комнату
[03:19:31] Typhon вышел(а) из комнаты: Replaced by new connection
[03:19:50] Typhon вошёл(а) в комнату
[03:25:59] Typhon вышел(а) из комнаты: Replaced by new connection
[03:26:03] Typhon вошёл(а) в комнату
[03:29:45] Typhon вышел(а) из комнаты: Replaced by new connection
[03:30:04] Typhon вошёл(а) в комнату
[03:37:06] f[x] вышел(а) из комнаты: Computer went to sleep
[03:38:40] Typhon вышел(а) из комнаты
[04:20:24] shaggie вышел(а) из комнаты
[06:20:26] letrec вошёл(а) в комнату
[09:45:31] f[x] вошёл(а) в комнату
[10:02:39] komar вышел(а) из комнаты
[10:04:52] komar вошёл(а) в комнату
[10:13:54] f[x] вышел(а) из комнаты
[11:09:39] Kakadu вошёл(а) в комнату
[11:53:02] komar вышел(а) из комнаты: Replaced by new connection
[11:53:02] komar вошёл(а) в комнату
[12:45:50] komar вышел(а) из комнаты
[12:46:10] komar вошёл(а) в комнату
[12:57:11] bobry вошёл(а) в комнату
[13:24:33] komar вышел(а) из комнаты: Replaced by new connection
[13:24:34] komar вошёл(а) в комнату
[13:28:16] <Kakadu> ermine: А как из камля определить что мы на фряхе?
[13:33:44] <ermine> Kakadu: в камле нет готовых функций
[13:34:11] <ermine> читать ответ из open_process_in с командой uname -s
[13:34:31] <Kakadu> а у тебя что оно выдает?
[13:34:43] <ermine> если Sys.os_type = unix
[13:35:17] <ermine> $ uname -s
FreeBSD
[13:35:21] <Kakadu> угу
[13:35:41] <Kakadu> а на маке не помнишь?
[13:36:02] <ermine> там должно быть Darwin
[13:36:15] <ermine> по идее, щас лень открывать крышку ноута
[13:36:46] <ermine> и в линуксе выдается Linux
[13:37:01] <ermine> с виндой вроде достаточно os_type
[13:37:41] <Kakadu> я знаю что выдается в линуксе)
[13:38:08] <ermine> Kakadu: предполагается ввести конечное множество переменных, которые получают значения в процессе запуска барбы и могут быть использованы в скриптах/рецептах
[13:38:17] <ermine> если gds не возражает
[13:39:19] <ermine> Kakadu: и наверное уже можно смотреть в его любимый ocaml-shell-dsl
[13:52:56] Typhon вошёл(а) в комнату
[14:33:13] Typhon вышел(а) из комнаты
[15:34:47] shaggie вошёл(а) в комнату
[15:41:33] komar вышел(а) из комнаты
[15:41:53] komar вошёл(а) в комнату
[16:25:44] <bobry> кто нибудь, ткните меня в нормальное объяснение tying the knot?
[16:27:06] <Kakadu> думаю это проще использовать чем обхяснять
[16:27:44] <bobry> Kakadu: в смысле? я как раз пытаюсь понять как это использовать
[16:28:12] <Kakadu> ну а что надо сделать?
[16:28:54] <bobry> "Бесконечная упорядоченная последовательность целых чисел без повторений составлена из всех квадратов, кубов и факториалов натуральных чисел. Написать программу для вычисления n-го члена этой последовательности."
[16:29:04] <bobry> меня смущает "упорядоченная" и "без повторений"
[16:30:20] <Kakadu> х-й?
[16:30:42] <bobry> на х-ле ага
[16:30:48] <bobry> но я бы предпочел таки линки на почитать
[16:31:23] <Kakadu> map + concat + nth?
[16:34:57] <bobry> как гарантировать упорядоченность и отсутствие повторений?
concatMap f [2..] ==> 4 8 2 9 27 6 ...
[16:37:11] <bobry> ну допустим повторений там и так не будет, а вот с упорядоченностью беда
[16:37:36] <Kakadu> мдя. не подумал
[16:38:38] komar вышел(а) из комнаты: Replaced by new connection
[16:38:39] komar вошёл(а) в комнату
[16:38:53] <bobry> вообще Кубенский мужык, я посмотрел его лекцию -- там один пример, поясняюзий дзен завязывания узлов, и тот -- числа фибоначчи
[16:39:03] <bobry> видимо нормальные пасаны должны были догнать с первого раза
[16:39:29] <bobry> ладно, пойду погуляю, может чего надумается
[16:40:19] letrec вышел(а) из комнаты: Replaced by new connection
[16:40:20] letrec вошёл(а) в комнату
[18:12:00] ftrvxmtrx вышел(а) из комнаты
[18:14:39] ftrvxmtrx вошёл(а) в комнату
[18:21:26] komar вышел(а) из комнаты
[18:22:06] komar вошёл(а) в комнату
[19:02:55] <gds> bobry: разобрался?
[19:16:21] komar вышел(а) из комнаты
[19:18:59] komar вошёл(а) в комнату
[20:09:37] komar вышел(а) из комнаты
[20:10:06] komar вошёл(а) в комнату
[20:26:22] <bobry> gds: неа, подкинешь ссылочку?
[20:27:34] <gds> bobry: на каком этапе у тебя сейчас текущий затык?
[20:28:02] <bobry> gds: я пока вообще на нуле, хочется почитать "что это и где это полезно"
[20:28:18] <bobry> в х-л вики довольно бесполезный пример с циклической структурой
[20:30:24] <bobry> сама возможность построить указанную выше последовательность в сортированом виде пока что звучит как Магия
[20:31:34] <gds> ну вот, в окамле, например,
let rec fact acc i = acc :: fact (acc * i) (i + 1)
с поправкой на лентяйку.
а эта поправка -- как раз вычисление рекурсивного вызова fact лениво.  то есть, берём первый элемент списка, там будет [1 :: ленивое1], при нужде ленивое1 разворачивается в [2 :: ленивое2], дальше -- в [6 :: ..].
про сортировку и дубликаты -- знай, что слияние двух отсортированных списков выдаёт отсортированный список, и слияние делается лениво вполне нормально.  там и дубликаты убрать можно.
[20:32:03] <bobry> гм, а ведь здравая идея!
[20:33:07] <bobry> как то с трудом верится что х-листы про этот финт не написали папир
[20:36:43] <gds> это настолько боян, что папиры не нужны :)
[20:37:57] <bobry> ну йома, а я и не в курсе :(
[20:38:30] <gds> ага, пичалька.
[20:39:17] <bobry> gds: так идея как раз в том что наши ленивые значение "когда то вычислятся"? что-то типа futures чтоли?
[20:39:25] <bobry> в смысле в строгом камле оно бы явно не завелось
[20:40:58] <gds> type list_with_lazy_tail 'a = [ Nil | Cons of 'a and lazy (list_with_lazy_tail 'a) ]
и завелось бы.
[20:41:11] <gds> или, чуть более нативно, на stream'ах.
[20:41:18] <bobry> ну или так ага
[20:41:55] <gds> у людей вообще шок, когда говоришь им про "ленивые вычисления в окамле".
[20:42:58] <bobry> досадно слегка что в камле для этого нужен хак в виде lazy
[20:43:23] <bobry> в смысле "специальное ключевое слово"
[20:43:57] <gds> это не хак, это strict evaluation order, и это не досадно.  контролируемая и явная ленивость, по моему опыту, гораздо лучше контролируемого и явного строгого порядка вычислений.
[20:44:38] <bobry> по моему небольшому опыту тоже
[20:45:06] <bobry> я хотел бы чтобы lazy была функцией
[20:45:53] <bobry> правда в любом случае в парсере пришлось бы делать special case
[20:46:28] <gds> ну бери Lazy.lazy_from_fun (fun () -> ..) и всё.
[20:46:31] <gds> честно.
[20:46:41] <gds> в это примерно и разворачивается.
[21:16:06] letrec вышел(а) из комнаты
[21:24:09] komar вышел(а) из комнаты
[21:24:16] komar вошёл(а) в комнату
[21:44:50] komar вышел(а) из комнаты
[21:45:58] <gds> bobry: внезапно: "в смысле "специальное ключевое слово"" -- досадно, что в х-е нужно тоже специальное ключевое слово для строгости.
[22:21:39] komar вошёл(а) в комнату
[22:38:53] <gds> bobry: я тебе покушать принёс!
[22:41:27] <ermine> o_O
[22:41:41] <gds> ща-ща.
[22:42:25] ermine принюхивается
[22:46:51] <gds> bobry: http://paste.in.ua/4020/
[22:52:30] <gds> если кому интересно, https://gist.github.com/237a1d089514a7e6f70b
[22:56:28] <gds> а вот вынести uniq отдельно не получилось, так как он неконструктивен: нет гарантии того, что за конечное число шагов будет выдан хоть какой-нибудь результат.  в качестве примера -- поток из одинаковых значений.
[22:58:32] <gds> bobry: совсем забыл, тебе же для другого языка надо.  держи: http://paste.in.ua/4021/
(мамой клянусь, я ни строчки этого кода не написал.  я не законтачился.)
[23:00:59] ermine выделила про себя слова gds в другом (своем любимом) контексте: невозможно за конечное число выдать результат - это грамматика первых двух типов по хомскому, видимо кому-то лень специфицировать более четкую задачу
[23:03:08] <gds> ermine: а попа дробнее?
в принципе, тут чётче вполне таки реально -- достаточно ввести "потоки возрастающих чисел" и доказать, что uniq на них не повиснет никогда.  Так и хотел изначально, но лень было доказывать, что всё получится, потому что через жопу начал писать.  А так -- реально всё.  Подумаю ещё на досуге.
[23:08:07] <gds> причём, что характерно, я в коде ничего не доказывал.  Просто писал его как обычный функциональный код, без всяких фокусов с доказательствами, зависимыми типами и прочей трахомудией.
[23:12:16] <ermine> начальные признаки возрастной гениальности
[23:12:29] ermine прячется
[23:14:42] <gds> да какая нахрен гениальность, о чём ты.  выходи из укрытия и расскажи.
[23:25:10] <ermine> лучше уползну в другое горизонтальное укрытие
[23:25:47] <ermine> в маркдауне в md2html какая-то затяжная зима из-за хтмля
[23:26:09] <ermine> надо бы завтра чонить решить
[23:27:25] <ermine> а всё из-за фантомных типов, с ними не поспоришь рекурсивными функциями
[23:35:25] <ermine> еще немножко, и парсер маркдауна превратится в парсер хтмля
[23:35:55] <ermine> хотя я всегда мечтала иметь парсер html5, но явно не на базе маркдауна, а на базе спеки по html5
[23:38:15] <bobry> gds: не буду глядеть -- я сам уже выродил почти :)
[23:38:20] <bobry> ну точнее посмотрю но попозжа
[23:38:52] <gds> bobry: там не "продакшон-реди", там арифметика на числах пеано, можешь смело смотреть :)
[23:43:10] ermine вышел(а) из комнаты
[23:53:13] bobry вышел(а) из комнаты
[23:55:55] bobry вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!