Home
Objective Caml
ocaml@conference.jabber.ru
Четверг, 8 сентября 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
[00:29:20] ygrek вошёл(а) в комнату
[00:31:17] <gds> Error: In the definition of L.tb, type L.ta (L.id (L.id 'a)) should be L.ta 'b -- вайвайвай.
[00:31:21] <ygrek> gds: трави камло-лист, неча тут остатки мизкив разрывать
[00:32:01] <gds> придётся...  ща, дорву ещё чуток, и буду телегу сочинять.
[00:57:43] ygrek вышел(а) из комнаты
[01:23:04] Typhon вышел(а) из комнаты
[01:39:29] <gds> отписал.  https://sympa-roc.inria.fr/wws/arc/caml-list/2011-09/msg00046.html
[01:40:13] <gds> с другой стороны, они там что, сдурели, что ли, традиции рушить?  Почему дата "Thu, 8 Sep 2011 00:29:20 +0300" вместо NaN-NaN-NaN?
[01:40:49] <gds> и последнее.  Для действительно крепких разумом.  http://paste.in.ua/3005/
[01:41:12] gds вышел(а) из комнаты
[03:38:36] letrec вошёл(а) в комнату
[03:38:42] letrec вышел(а) из комнаты
[03:38:58] letrec вошёл(а) в комнату
[04:46:19] letrec вышел(а) из комнаты
[07:04:35] letrec вошёл(а) в комнату
[07:04:40] letrec вышел(а) из комнаты
[08:07:38] iNode вошёл(а) в комнату
[08:21:17] iNode вышел(а) из комнаты
[08:30:12] zert вошёл(а) в комнату
[09:00:54] iNode вошёл(а) в комнату
[09:43:24] komar вышел(а) из комнаты
[09:58:35] komar вошёл(а) в комнату
[10:34:11] ermine вошёл(а) в комнату
[11:34:59] <f[x]> gds: реально пацанский камло!
[11:55:14] gds вошёл(а) в комнату
[12:03:07] <gds> ну, в общем, мне Жак ответил, как я и ожидал, и очень быстро, но радости мне это не принесло: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-09/msg00047.html -- разве что ясности.  Не могу найти правильные слова, чтобы поблагодарить его.
[12:25:54] klapaucius вошёл(а) в комнату
[13:09:25] Kakadu вошёл(а) в комнату
[13:50:58] Typhon вошёл(а) в комнату
[13:57:33] <Kakadu> у меня глюки или тут реально русские буквы вместо ключевых слов? http://paste.in.ua/3005/
[13:57:37] <Typhon> Валь и Вал !
[13:58:00] <gds> весело там весело!1111
[13:58:14] <gds> оборжёшься прямо :[
[14:05:59] <gds> ну ладно, хрен с ним, метода lst 'a -> lst 'b не будет.  но тогда согласился бы на отдельную функцию типа map, которая всё, что можно было бы отобразить, отображала бы.  хотя бы массивы и списки, завёрнутые в объекты.  то есть, чтобы объекты-аргументы можно было как-нибудь ограничить по типу ( < mappable : ... ; .. > ), а объекты-результаты имели правильный тип: для lst 'a -- lst 'b, для условного arr 'a -- arr 'b.
[14:08:14] <Kakadu> gds: ну вроде это должно получиться. Иначе придется учить тайпклассы и переходить на х-ль :trollface:
[14:09:03] <gds> должно?  как записать эту функцию, какой у неё будет тип?
[14:14:14] <Kakadu> да, я поторопился
[14:15:52] <Kakadu> по-видимому надо, чтобы в сигнатуре mappable была какая-та инфа о типе контейнера и о том как его пересобрать для новых значений
[14:15:56] <gds> да!
[14:16:37] <Kakadu> мне кажется, что тут будет жуткая потеря производительности
[14:16:54] <Kakadu> например у тебя Map завернутый в класс хрунится как Б-дерево
[14:16:57] <gds> а мне для тех целей, где производительность не нужна.
[14:17:07] <Kakadu> тогда...
[14:27:48] <Kakadu> я хз
[14:28:12] <Kakadu> не понятно как описать тип класса, у которого есть метод, возвращающий экземпляр себя
[14:28:22] <Kakadu> себя, т.е своего типа
[14:28:35] <gds> да, и при этом с другим типовым параметром.
[14:28:50] <gds> а так -- < methods ; .. > as 'a -> 'a  и всё
[14:29:31] <Kakadu> нет, я вроде не про то
[14:30:03] <gds> можно возвращать не экземпляр себя, а нечто, из чего можно потом сделать экземпляр себя: например, функцию list 'a -> lst 'a.
[14:30:41] <Kakadu> class ['a] listcont = object
  method mappable : 'a unicont -> 'a listcont
end
[14:30:53] <Kakadu> непонятно как в общем случае описать такие классы
[14:31:54] <Kakadu> что-то типа val memap (type 'a t) : <mappable : 'a unicont -> 'a t; ..> as 'a t -> ...
[14:33:04] <gds> вот-вот, (type 'a t) тоже думал, нет такого :)  и при разворачивании первоклассного модуля тоже засада, (val M : F with type 'a t = 'a list) не катит, так как только типы без параметров можно ограничивать.
[14:34:05] <Kakadu> может быть стоит выловить какогонибудь левого чувака из мира агдаистов и спросить как бы они это решали?
[14:34:21] <Kakadu> может там есть вкусняшки?
[14:35:57] <gds> было бы интересно, однако там куча типовых аннотаций ставится, и почти уверен, что в данном случае тоже потребуются.  но, всё же, было бы интересно.
[14:37:37] <Kakadu> а если бы вместо объекта у тебя был модель, ты бы смог написать такую хорошую Map?
[14:37:48] <Kakadu> модуль*
[14:38:40] <gds> вот это и смотрю, в том числе в первоклассные модули.  Но не очень получилось бы: как в map func container выцепить в рантайме, какому модулю принадлежит container?
[14:41:34] <Kakadu> conteiner : < method module_primitive:'a tt; method module_map: ('a->b) -> 'a tt -> 'b tt; ..>
[14:43:23] <gds> вроде пробовал такое, но сейчас перепроверю точно.
[14:49:13] <Kakadu> я думал, что когда я пытался с помощью объектов соединять сигналы и слоты, то получалось камлёвоё извращение, но gds меня превзошел.
[14:49:58] <Kakadu> Хиндли и Милнер сейчас на небе ужасаются от того, что их алгорифму подсовывают
[15:00:35] ermine вышел(а) из комнаты
[15:06:42] <gds> Kakadu: сходу не выходит по твоей идее, но вроде близко должно быть: http://paste.in.ua/3008/
[15:15:42] <Kakadu> кхм
[15:15:48] <Kakadu> ты написал !'c 'd
[15:16:08] <Kakadu> нет
[15:16:11] <Kakadu> черт
[15:38:30] <Kakadu> gds: http://paste.in.ua/3009/ тебя тип map не смущает?
[15:39:43] <gds> Kakadu: в строке 9 -- ээ, по идее, там тоже должен быть полиморфный метод...
[15:40:24] <Kakadu> gds: а почему он ничерта не полиморфный?
[15:40:55] <Kakadu> может потому что 'a list инвариантный? ...
[15:41:06] <Kakadu> нет, это не из той оперы
[15:41:07] <gds> не в этом дело.
[15:43:01] <Kakadu> просто я хотел написать
value map: !'a 'b. ('a -> 'b) ->
    < map : ('a -> 'b) -> _ -> _ ; .. > -> _
=
fun f cont -> cont#wrap (cont#map f cont#v);
[15:43:03] <gds> а.  оно просто отображает переменные без явного указания.  будь не полиморфный метод, этого бы не было:
# value ma f x = q#map f x;
value ma : ('a -> 'b) -> list 'a -> list 'b = <fun>
обычный value restriction, так как q#map это таки выражение, требующее вычислений.
[15:43:09] <Kakadu> но там под подтиповости не сходится
[15:43:38] ermine вошёл(а) в комнату
[15:43:49] <gds> ну вот правильно, по идее, хотел написать.  только там, скорее, полиморфности не сходятся и/или какая-то переменная выбегает наружу.
[15:54:53] <gds> прогресс -- придумал, как всё сделать с магией.  (а именно, пример -- из рассылки, а во внешней функции map просто брать первое поле возвращённой записи с типом "ta", и применять к нему маппящую функцию.)  но неспортивно.
[16:19:40] shaggie вошёл(а) в комнату
[16:24:38] letrec вошёл(а) в комнату
[16:38:16] komar вышел(а) из комнаты: Replaced by new connection
[16:38:16] komar вошёл(а) в комнату
[17:19:01] shaggie вышел(а) из комнаты
[17:40:12] ftrvxmtrx вышел(а) из комнаты
[17:45:39] Kakadu вышел(а) из комнаты
[18:18:47] <f[x]> хм, http://caml.inria.fr/cgi-bin/viewcvs.cgi/?view=rev&rev=11180
[18:28:13] Kakadu вошёл(а) в комнату
[18:33:13] ftrvxmtrx вошёл(а) в комнату
[19:01:46] <Typhon> f[x]: а ты оперой пользуешься вроде бы? под дебианом или убунтой?
[19:01:58] <f[x]> deb.opera.com
[19:02:41] <Typhon> нене, знаю где найти, я скорее про ощущения, и про "всё ли ок"
[19:04:28] <f[x]> а, ну я уже давно с оперой на дебиане, так что если что и не ок, то я привык :)
[19:04:34] <f[x]> вроде всё чотко
[19:09:39] <f[x]> 450 вкладок - RSS 1.9G :)
[19:12:30] <Typhon> пойду покажу файрфоксерам ^_^
[19:14:16] letrec вышел(а) из комнаты
[19:22:46] ftrvxmtrx вышел(а) из комнаты
[19:39:39] <f[x]> http://devmusings.legiasoft.com/tag/ocaml?do=showtag&tag=tag%3Aocaml
[19:39:44] <f[x]> не видел раньше
[20:15:46] ftrvxmtrx вошёл(а) в комнату
[20:31:21] komar вышел(а) из комнаты
[20:34:43] komar вошёл(а) в комнату
[21:06:47] Typhon вышел(а) из комнаты
[21:11:29] ftrvxmtrx вышел(а) из комнаты
[21:11:47] ftrvxmtrx вошёл(а) в комнату
[21:14:37] ftrvxmtrx вышел(а) из комнаты
[21:59:20] ftrvxmtrx вошёл(а) в комнату
[22:29:48] Typhon вошёл(а) в комнату
[22:55:07] Typhon вышел(а) из комнаты
[22:55:51] Typhon вошёл(а) в комнату
[23:12:29] zert вышел(а) из комнаты
[23:21:36] komar вышел(а) из комнаты
[23:25:24] ermine вышел(а) из комнаты
[23:59:44] iNode вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!