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

GMT+4
[00:41:04] Typhon вошёл(а) в комнату
[00:48:15] <Typhon> bobry, можешь попробовать наконтрибьютить, но вот я неасилил исходников :-(
[00:53:39] <bobry> кстате в камле можно как нить кошерно бул в инт перевести?
[00:54:27] <Typhon> if bool then 1 else o ?
[00:54:32] Kakadu вышел(а) из комнаты
[00:54:44] <bobry> ну это не кошерно
[00:54:51] <bobry> я вот думал есть int_of_bool, ан нет
[00:55:20] <bobry> Typhon: оффтоп, но не могу удержаться -- у вас там восьмого октября в столицах буит играть port-royal, знаешь таких пацанов?
[00:55:50] <Typhon> нет, у нас тут в столицах 9 октября будет играть  death in june, все чоткие пацаны идут туда %)
[00:56:14] <bobry> ааа, ну тогда да -- вне конкуренции :)
[01:34:43] Typhon вышел(а) из комнаты: Replaced by new connection
[01:34:45] Typhon вошёл(а) в комнату
[02:31:03] <Typhon> ocaml-core@googlegroups.com
[02:31:06] <Typhon> если пропустили
[02:31:22] <Typhon> ушаты помоев можно лить теперь туда!
[03:37:21] letrec вошёл(а) в комнату
[03:47:09] Typhon вышел(а) из комнаты
[04:46:41] letrec вышел(а) из комнаты
[07:20:24] zert вошёл(а) в комнату
[07:41:36] ermine вошёл(а) в комнату
[08:32:45] gds вошёл(а) в комнату
[09:33:58] Typhon вошёл(а) в комнату
[09:48:04] Typhon вышел(а) из комнаты
[10:40:32] Typhon вошёл(а) в комнату
[10:41:21] komar вышел(а) из комнаты: Replaced by new connection
[10:41:21] komar вошёл(а) в комнату
[11:30:47] <Typhon> http://www.reddit.com/r/programming/comments/kuhn3/ocaml_for_the_masses/c2ndsn0
[11:34:04] <gds> правильно.
[11:53:14] <gds> в мантисе подсказывают, что "let __ : int = 1" работает почти как "let (_ : int) = 1".
[12:05:17] <f[x]> Typhon: угу, у легалля стиль кода и вообще подход к архитектуре очень многословный
[12:06:06] <gds> как бы обозвать функцию, преобразующую значения данного типа в строку?  to_string -- дофигабукавак.  print?  show?
[12:06:16] <f[x]> show
[12:06:56] <Typhon> dump %)
[12:07:08] <gds> как бы обозвать функцию, преобразующую значения данного типа в строку?  to_string -- дофигабукавак.  print?  show?  dump?  :]
[12:07:23] <Typhon> to_s
[12:07:35] <Typhon> как в рубе
[12:07:36] <gds> A.to_s, Por.to_s?
[12:07:47] bobry вышел(а) из комнаты
[12:08:25] <Typhon> show  будет х-люгам понятно, но вот меня это show смущает обычно :-( но вроде как более менее принято
[12:09:09] <f[x]> АРГХ! aborted at c_objsize.c:229: assert_failed: writecolor
[12:09:26] <gds> f[x]: точно самое свежее?
[12:09:44] <f[x]> 0.14
[12:10:18] <f[x]> сделал бы кстати нормальный index.html для проекта!
[12:10:21] <f[x]> о, 0.16 уже
[12:10:23] <f[x]> ща :)
[12:10:35] <gds> f[x]: да, http://forge.ocamlcore.org/frs/download.php/442/objsize-0.16.tar.gz
[12:10:55] <f[x]> release notes у тебя шикарные
[12:11:12] <f[x]> в стиле ms - пофиксили важно-срочную багу, а что за бага - неизвестно
[12:12:25] <gds> а там дофига писать было бы.  просто указываю, что "если пользовали такую-то версию -- больше не пользуйте".
[12:12:40] <gds> отличие от ms -- в том, что у меня можно сделать дифф и поглядеть, что за бага.
[12:13:17] <f[x]> ок
[12:13:35] <f[x]> хотя стоит писать хотя бы симптом - типа random crash
[12:13:38] <f[x]> или ещё что
[12:13:52] f[x] конструктивен!
[12:14:31] <gds> Typhon: to_s -- тоже как-то геморновато писать из-за "_".  dump -- скорее должно быть "показать для отладочных целей" (в принципе, тоже нужное дело, но попозже).  print -- намёк на реальный вывод (на консоль или куда ещё).  show, получается?
[12:15:17] <gds> f[x]: а вот тут -- согласен, я сделал не идеально, надо было описать.  Вплоть до сообщения об ошибке.
[12:16:51] <Typhon> print точно отменить, to_s неудобно, ага, остаётся show как более менее принятый, да :-)
[12:19:50] <gds> ога, так и сделаю.  ща информацию о типе в кадастре переколбашиваю на модули из отдельных функций типа keq/kcmp (key eq, key cmp).
[12:22:30] <gds> в общем, у меня там будут те костыли, которые я как-то описывал: opt_{eq,cmp,hash} будут всегда, возможно нерабочие, и отдельно типы TEq, TCmpEq, TCmpEqHash, как бы протаскивающие в типы гарантии пользователя "эта операция точно определена".
[12:22:57] shaggie вошёл(а) в комнату
[12:23:06] <f[x]> да, годный трюк с __
[12:23:11] <Typhon> я фичереквестирую сразу примеры использовния
[12:23:28] Kakadu вошёл(а) в комнату
[12:23:32] <Typhon> кадастра
[12:23:36] <gds> f[x]: только значение реально создаётся.  для байткода это может оставить его в памяти.
[12:24:32] <gds> а вот show у меня будет только opt_show, так как пока не вижу применений, в которых надо типами гарантировать наличие show у типа данных.
[12:25:04] letrec вошёл(а) в комнату
[12:25:11] letrec вышел(а) из комнаты
[12:25:26] letrec вошёл(а) в комнату
[12:25:33] <gds> Typhon: понял.  Примеры -- это только когда merge over tries сделаю.  А пока из примеров -- https://bitbucket.org/gds/cadastr/src/tip/test/test.ml
[12:26:01] <gds> но я там суровые изменения затеял пока что, половину кода сломал, половину потерял (образно).
[12:26:44] <Typhon> угу, посмотрю на тесты, но больше всего интересует ответ на вопрос "а зачем это?" (текстовую версию ответа помню, было бы круто, если бы был и код)
[12:27:02] <gds> понял идею.
[12:51:55] <Kakadu> ermine: http://groups.google.com/group/ocaml-core чтобы ругаться туды
[13:01:22] <gds> интересно.  если есть fun x -> fun (type t) -> ... и компилятор выводит, что в типе x содержится тип t, то это не сработает.  надо fun (type t) -> fun x -> ...  scope другой получается, видимо?
[13:03:52] <ermine> Kakadu: да у них есть емейл напрямую, а еще я через сотрудника ОЫ чуток попинала, правда как-то вяло получается
[13:04:04] <ermine> щас попробую скомпилить мост с objective-c
[13:05:31] <ermine> Error: Unbound module NSRange
[13:05:47] <ermine> аштойто?
[13:10:10] <ermine> лечится make depend
[13:10:16] <ermine> правда сломалось в другом месте
[13:10:45] <ermine> в оби-сишечке
[13:10:53] <ermine> Kakadu: похоже тот проект протух
[13:11:16] <ermine> сначала gtk/qt, потом посмотрим
[13:17:57] letrec вышел(а) из комнаты
[13:22:25] <gds> о, такие тесты уже проходят: http://paste.in.ua/3137/ -- то есть, имея описание типа с типом (module TEq with type t = тип) (то есть, на значениях определено равенство), я могу сходу проверить, определено ли на них опциональное сравнение.
[13:33:45] <gds> однако, всё же, я что-то делаю не так.  Подскажите, если знаете.  http://paste.in.ua/3138/
[13:35:48] f[x] пас
[13:35:53] <f[x]> а зачем два раза fun писать?
[13:37:05] <gds> а хз, почему-то думал, что fun (type t) -> это отдельная специальная форма.
впрочем, оно и не мешает, и не помогает.
[13:37:37] <Kakadu> ermine: я через мыло ничего не добился
[13:42:55] <gds> ах ты ж срань господня!  Оно не может подтипизировать TEq -> T: http://paste.in.ua/3139/
[13:44:41] <gds> и даже в явном виде, opt_cmp (tint :> (module T with type t = int)) 123 456 :
Error: Type (module Cd.TEq with type t = int) is not a subtype of
         (module Cd.T with type t = int)
[13:46:57] <gds> то есть, облом принципиален: если представлять информацию о типах как TCmpEqHashWhatever, а функции будет достаточно только TEq, получаем беспонт в его чистой форме.  Либо какие-то преобразования, либо что-то подобное.
[13:49:27] <gds> получается, надо откатываться до объектов.  Там, кстати, ещё одно удобство есть:
method cmp = raise (No "cmp")
vs
method cmp a b = really_comparing a b
-- когда берём этот метод через let my_cmp = typeinfo#cmp, сразу имеем исключение, если этого метода нет.  Через модули пришлось бы как-то так:
value cmp : unit -> t -> t -> cmp_res = fun () -> raise (No "cmp")
vs
value cmp : unit -> t -> t -> cmp_res = fun () -> fun a b -> really_comparing a b
[13:50:43] <gds> и можно налепить функцию типа
value has_cmp : typeinfo 'a -> bool = fun ti -> try (ignore (ti#cmp); True) with [No "cmp" -> False]
[13:57:55] letrec вошёл(а) в комнату
[14:09:53] <gds> а у кого-нибудь есть лишний моск, чтобы пообщаться в ирц по проблеме, которую сформулирую?  а то уже забыл, как входил туда.
[14:12:53] <f[x]> gds: aptitude install xchat
[14:13:15] <f[x]> если не осилишь :) то через час можешь мой моск взять
[14:15:37] <gds> я тут подумал -- да вот хз, стоит ли оно вообще.  понятно, что подтипизации тут нечего ждать, ибо она поломает многое, на что первоклассные модули рассчитывают (например, на record-подобный поиск значения по смещению).  и хз, зачем это кто-то будет ломать.  так что лучше проедем это, тем более, варианты есть вполне.
[14:16:11] <gds> просто я раньше думал по недомыслию, что оно должно само подтипизировать, как при передаче аргумента функтору, но потом подумал получше.
[14:29:45] <gds> кстати, я камлохульствую.  type cmp_res = [ LT | EQ | GT ].
[14:57:07] <Kakadu> только не кидайте какашками.
меня начали порой постигать смутные сомнения: может мировой коммунизм надо строить не на камле, а на скале? хочется на неё посмотреть сильно.
[14:58:54] <klapaucius> Лучше сразу на С++ - к чему эти половиняатые решения?
[14:59:28] <f[x]> Kakadu же просил не кидаться c++'ом
[15:00:08] <Kakadu> klapaucius: ну я сейчас  и строю на камле и С++е
[15:01:11] <Kakadu> gds: btw, я кажется понял в каком случае наше вчерашнее решение не заработает. Но это частный случай. В терминах гуепостроения на lablqt --- сильно частный случай
[15:01:50] <gds> Kakadu: тем не менее, очень интересно, расскажи.
[15:02:37] <Kakadu> gds: тот же пример:
class A {
public:
  void foo() { goo(); }
  void goo() {} // когда goo не виртуальный
};
[15:03:45] <gds> A.foo вызывает A.goo?
[15:03:58] <Kakadu> да
[15:04:19] <Kakadu> проблема в том что именно этот конкретный goo
[15:04:33] <Kakadu> в Java такой проблемы быб не было --- там всё виртуальное
[15:07:01] <gds> aa#foo будет вызывать A.foo, aa#goo будет вызывать A.goo.  Далее -- A.foo вызовет A.goo.  Не?
[15:08:12] <Kakadu> если мы отнаследуемся в камле и переопределим goo, то вызов subclass#foo вызовет A::foo , который вызовет старый A::goo
[15:10:12] <Kakadu> мне даже в честь этого пришло в голову синтаксическое расширение для декларирования камлёвых 'final' методов
[15:10:37] <gds> чото не могу сообразить эту проблему.  беру таймаут.
[15:17:39] <ermine> таак, кишечки конфы в горгоне готовы, теперь надо чонить почитать как в gtk печатать текст и украшать его
[15:18:14] <zert> ermine: в gtk есть что-нибудь типа qml в Qt?
[15:18:27] <zert> я просто прифигел с того, насколько это годная штуковина
[15:19:59] <Kakadu> zert: не думаю
[15:20:07] <Kakadu> ибо QML это какой-то ппц
[15:20:51] <Kakadu> ermine: можешь к горгоне прикрутить браузерный интерфейс в перспективе... с помощью свежего JavaFX 2.0... в перспективе , может быть ..... )
[15:21:46] ermine ничего не знает про qt
[15:22:56] <ermine> Kakadu: ну прикрутим всё, о чем душа пофантазирует
[15:23:10] <zert> Kakadu: на нём очень няшные инторфейсики получаются
[15:23:19] <zert> Kakadu: ты его давно смотрел?
[15:23:31] <zert> он сначала был хреновенький
[15:23:41] <zert> когда его только в qt внедрили
[15:23:49] <zert> а в текущей версии годный
[15:24:06] <zert> можно из крестового кода в него ходить и наоборот
[15:27:27] <Kakadu> zert: Я первую версию смотрел на Sun tech days последнем до оракула, а про новую версию только что на лоре прочитал
[15:31:36] <zert> а где там на лоре?
[15:32:20] <Kakadu> zert: https://www.linux.org.ru/news/java/6828200
[15:32:36] <zert> жава?
[15:32:52] <zert> причём тут это?
[15:33:11] <zert> QML
[15:33:12] <Kakadu> я не отвечаю за ньюс-сортировщиков лора
[15:33:25] <Kakadu> аааа
[15:33:35] <Kakadu> zert: ты про QML?
[15:33:37] <zert> да
[15:33:43] <zert> JavaFX нахер
[15:33:53] <zert> это ж кровавая содомия кочергою
[15:34:10] <Kakadu> ну мне не стыдно что я не понял тебя правильно
[15:34:40] <Kakadu> а на QML я в принцпе не писал
[15:34:57] <zert> я сейчас пишу
[15:35:20] <Kakadu> насколько я понял это декларативщина, к которой приписывается некий объект Qt откуда берется вся инфа чем заполнять
[15:36:08] <zert> несколько объектов, сигналы, слоты, всё то же самое, что и в обычном куте, но декларативно
[15:36:12] <Kakadu> zert: если ты расскажешь как ты видешь qml в связке с камлом, то я буду рад это устлышать
[15:36:37] <zert> Kakadu: я спрашивал про аналог qml в gtk
[15:36:52] <Kakadu> zert: я про него не слышал
[15:36:59] <zert> вот и я не слышал
[15:37:15] <zert> хотел узнать, есть ли такое, или нет
[15:37:48] <Typhon> clutter?
[17:21:44] <f[x]> ко вчерашним разборкам - первый коммент в http://ocaml.janestreet.com/?q=node/79
[17:50:47] <gds> "it seems that explicit type parameters [...].  Their chief purpose, rather, is to give one a way to refer to the type parameters of a function when defining type components of first-class modules."
тоже так понял.  уже.
[18:00:37] <ermine> а кто расскажет мне сказочку о том, как сделать список, который всегда будет иметь не более 10 элементов при добавлении любого количества элементов?
[18:01:22] <ermine> наобум - queue с ручным удалением лишних при добавлении
[18:01:51] <f[x]> дык да, оберни в модуль чтобы не видно было
[18:02:58] ermine строгает класс инпута с хистори
[18:03:03] <Typhon> ermine: cyclist ?
[18:03:30] <ermine> Typhon: аштойта?
[18:03:54] <Typhon> http://forge.ocamlcore.org/projects/ocaml-cyclist/  — но может не совсем то, что тебе нужно, gds лучше рассказать может ^_^
[18:03:56] <ermine> Typhon: ну не замкнутый нужен
[18:03:59] Typhon перевёл стрелки
[18:04:20] <ermine> мне нужен протекающий список, по которому можно топать, но длина ограничена
[18:05:18] ermine посмотрела, какой клиент у Typhon
[18:05:29] <ermine> Typhon: неужто нравится адиум?
[18:06:17] <Typhon> ermine: "так ведь других нет" %)
[18:06:23] <Typhon> но вообще — ничего так, работает
[18:07:17] <gds> cyclist тут не очень покатит, всё равно надо будет вручную что-то делать.  Я бы налепил "циклический буфер" в кадастре, мне оно реально пригодится, но это надо подождать пару часов.
[18:24:28] Typhon вышел(а) из комнаты: Replaced by new connection
[18:24:29] Typhon вошёл(а) в комнату
[18:32:03] Kakadu вышел(а) из комнаты
[19:03:35] Typhon вышел(а) из комнаты: Replaced by new connection
[19:03:36] Typhon вошёл(а) в комнату
[19:28:21] Kakadu вошёл(а) в комнату
[19:40:40] letrec вышел(а) из комнаты
[19:40:56] letrec вошёл(а) в комнату
[20:06:50] bobry вошёл(а) в комнату
[20:11:12] Typhon вышел(а) из комнаты
[20:31:14] <ermine> блин, застряла на инпуте в gtk - никак не ловится кнопка ретурна
[20:31:34] <ermine> где-то туплю
[20:32:19] <ermine> f[x]: ты шаришь в lablgtk2?
[20:34:14] letrec вышел(а) из комнаты
[20:37:51] <Kakadu> ermine: я прикрутил конпеляцию в натив
[20:49:30] ad1862 вошёл(а) в комнату
[21:05:22] shaggie вышел(а) из комнаты
[21:17:54] <ermine> Kakadu: у меня засада вот в том, что я не уловила как в многострочнем редакторе повесить калбэк на кнопку return
[21:18:08] <ermine> Kakadu: попробуй на своем глюкале lablqt
[21:18:44] <ermine> хотя в принципе я знаю как в gt ловить все кнопки, но одно это уже смущает
[21:19:30] <ermine> ща потестим натив
[21:20:31] <ermine> запустила компиляцию, опять забыла про time, вижу *.cmx
[21:21:09] <ermine> скомпилится и пойду нафиг читать в горизонтальном положении
[21:25:07] <ermine> Kakadu: а есть достойный туториал "как написать прилагу на qt"?
[21:25:30] <ermine> наверное у тебя в lablqt функци 1:1 с плюсатыми
[21:29:41] <ermine> не собралось
[21:30:12] <Kakadu> врешь
[21:37:47] ermine вышел(а) из комнаты
[21:42:41] ermine вошёл(а) в комнату
[21:42:56] <ermine> плин иксы взвисли
[21:43:20] <Kakadu> а я думал ты почивать отправилась
[21:43:55] <ermine> уже
[21:44:43] ermine вышел(а) из комнаты
[21:53:56] ad1862 вышел(а) из комнаты
[21:59:36] shaggie вошёл(а) в комнату
[22:21:43] klapaucius вышел(а) из комнаты
[23:10:40] bobry вышел(а) из комнаты
[23:10:54] bobry вошёл(а) в комнату
[23:30:53] zert вышел(а) из комнаты
[23:31:45] zert вошёл(а) в комнату
[23:40:05] Typhon вошёл(а) в комнату
[23:45:29] <gds> если есть class map_tree ['k, 'v] ..., то сложно запихнуть этот 'k под нечто, которое было бы аналогично class map_tree (type k) ['k = k, 'v] ... .  Ибо.
[23:46:24] Typhon вышел(а) из комнаты: Replaced by new connection
[23:46:27] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!