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

GMT+4
[00:35:57] Kakadu вышел(а) из комнаты
[02:31:57] Typhon вышел(а) из комнаты
[08:30:46] zert вошёл(а) в комнату
[08:47:55] <gds> Typhon: wunderlist заценил -- красиво, прикольно, хорошая наводка.  осталось понять, впишется ли оно в меня.
[10:18:38] letrec вошёл(а) в комнату
[10:38:59] Typhon вошёл(а) в комнату
[10:42:17] Typhon вышел(а) из комнаты
[10:44:33] zert вышел(а) из комнаты
[10:49:13] ermine вошёл(а) в комнату
[11:13:04] bobry вошёл(а) в комнату
[11:13:12] <bobry> какие новости однако https://twitter.com/#!/yminsky/status/124625867447087104
[11:13:19] <bobry> шо есть wunderlist господа?
[11:25:20] <f[x]> вы их таки достали :)
[11:31:38] bobry вышел(а) из комнаты
[11:51:34] Typhon вошёл(а) в комнату
[11:52:58] <Typhon> bobry: http://www.wunderlist.com/ — простой туду. орг-моде мощнее, но его на ондроеде на заведёшь
[11:55:01] <gds> простой и красивый, кстати.
мне в идеале нужна софтина, которая кое-что больше умеет.  вот в том числе потому и интересно, что с lablqt будет дальше, ибо в вебе её делать -- ну не знаю, вариант, но не факт, что удобный.
[11:56:13] f[x] пытался todo.txt поюзать, потом забил и пишет на листочке
[11:57:15] <gds> листочек рулит, кстати.  потому и ношу с собой блокнот и ручку постоянно, всякую хрень туда записываю.  однако выходит так, что часть этой хрени попадает в гмыловские tasks.
[12:10:19] zert вошёл(а) в комнату
[12:34:27] Kakadu вошёл(а) в комнату
[12:36:26] <Kakadu> а я todo храню в текстовом файле, который показывается коньками. Но хотя больше я на память полагаюсь
[13:29:45] <gds> интересно, известна ли стандартно функция, имеющая тип
(('a * 'c) -> ('b * 'c)) -> ((list 'a) * 'c) -> ((list 'b) * 'c)
, как бы протаскивающая значение с типом 'c, при этом отображая list 'a в list 'b?  ну, может, не в окамле, а где ещё есть такое.
[13:32:30] <Kakadu> gds: у тебя часто она нужна?
[13:34:52] <gds> подобные вещи я делал по-другому, вплоть до явной рекурсии, но немало обходов списков можно сделать ею.  Собственно, затем и используют List.{map,fold,iter}, чтобы избавиться от явной рекурсии, которая провоцирует на бОльшее количество ошибок.  (ровно так же, как использование for i = 0 to Array.length a - 1 провоцирует на нарушение границ массива по сравнению с Array.iter.)
[13:39:45] komar вышел(а) из комнаты: Replaced by new connection
[13:39:46] komar вошёл(а) в комнату
[13:41:20] <gds> кстати вот, про именованные аргументы как-то говорили, пора практикой показать.  Вот начал я писать эту функцию с простого: http://paste.in.ua/3186/ , и теперь почти нереально ошибиться, и, например, забыть List.rev аккумулятор.
[13:45:52] <gds> кстати, кто там говорил, что в окамле нельзя тип рядом с функцией выписать, как в х-е?  адепт х-евой доктрины?  http://paste.in.ua/3187/
[13:46:36] <Kakadu> кстати, что твоя функция должна делать?
[13:47:06] <Kakadu> я не понял....
[13:48:54] <gds> ну, например, map_pass (fun (a, c) -> (a + c, c * 2)) ([1;2;3], 1) она должна выдать ([1+1; 2+(1*2); 3+(1*2*2)], (1*2*2*2)).
[13:49:38] <Kakadu> а что должна выдать map_pass (fun (a,c) -> (c,a)) от чего угодно?
[13:49:59] <Kakadu> а
[13:51:19] <gds> # map_pass (fun (a, c) -> (c, a)) ([1;2;3;4;5;6], 0);
- : (list int * int) = ([0; 1; 2; 3; 4; 5], 6)
[13:54:15] <Kakadu> я смотрю на уравнение
map_pass (fun (a, c) -> (a + c, c * 2)) ([1;2;3], 1) =  ([1+1; 2+(1*2); 3+(1*2*2)], (1*2*2*2))
и не могу догадаться что эта функция делает
[13:56:25] <Kakadu> а, я понял
[13:56:35] <gds> посмотри на типы, например.
[13:56:37] <Kakadu> это было непросто)
[13:57:11] <gds> из типов следует, что эта функция может в теории делать ровно две вещи: или игнорировать 'c, или протаскивать его при map'е.
[13:59:38] <Kakadu> я просто думал что при мапе ты работаешь с всё тем же с, а оказалось что по с тоже идет fold
[14:00:40] <ermine> хрю
[14:00:58] <gds> угу, один из вариантов был "с тем же 'c", другой "протаскивать 'c".  это можно вычислить из типов даже.
[14:03:15] <Typhon> gds: Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire — читал ли ты?
[14:03:32] <Typhon> http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.125
[14:03:58] <gds> читал где-то в 2003, что ли.  с тех пор подзабыл многое.
[14:07:27] <gds> Typhon: а поцчему ви таки спгашиваете? :]
[14:07:29] <Typhon> что-то кажется, что там похожее было.
[14:07:37] <gds> хе, понял.
[14:07:48] <Typhon> какой-то из комбинаторов, которые выводили
[14:22:17] <Typhon> gds: http://hackage.haskell.org/packages/archive/fgl/latest/doc/html/Data-Graph-Inductive-Query-Monad.html#v:mapSnd
[14:23:12] <gds> не, это чисто поверх туплов.
[14:24:04] <Typhon> ну так тип a может быть [a] ?
[14:24:35] <Typhon> а, посмотрел на типы
[14:24:44] <gds> если х-евый тип выписать, у меня будет
((a,c) -> (b,c)) -> ([a],c) -> ([b],c)
в хугле пробовал, плюс-минус перестановки аргументов и частей туплов, ниху..глится.
[14:24:54] <Typhon> но не понятно, зачем в функции (a*c) -> (b,c) ?
[14:25:03] <Typhon> типа, зачем "рабочей" функе ц таскать?
[14:25:14] <gds> затем, что она его меняет.
[14:25:20] <Typhon> а, ок
[14:25:25] <Typhon> догнал %)
[14:25:48] <gds> так-то! :)
[14:28:44] <Typhon> map-reduce такой
[14:29:45] <gds> если бы были кириллические идентификаторы, было бы "List.протаскунчик"
[14:29:55] <Typhon> :-)
[14:30:23] <Typhon> меня "протаскиввает" смущает — я думаю тогда, что оно не меняется
[14:30:52] <Typhon> http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-List.html#v:mapAccumL
[14:30:58] <Typhon> mapAccum я придумал
[14:31:01] <Typhon> и поискал
[14:31:19] <Typhon> The mapAccumL <http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-List.html#v:mapAccumL> function behaves like a combination of map <http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-List.html#v:map> and foldl <http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-List.html#v:foldl>
[14:31:23] <Typhon> похоже на то, что нужно
[14:32:17] <gds> ога, оно.  И я даже понял, почему не нашлось.  Оптимизаторы оптимизируют, туплы каррингом заменяют.
[14:33:20] <gds> а, доведу тип до имеющегося у них, мне-то пофиг.
[14:40:06] <gds> map_accum_left, в итоге.
[14:41:54] shaggie вошёл(а) в комнату
[14:50:55] <gds> кстати вот, я не вижу ничего плохого, чтобы заимствовать из х-я идеи для названий функций, да и вообще, идеи в целом.  Надо же помочь программистам, сделавшим неверный шаг, встать на путь истинный.
[14:52:06] <Typhon> да, да и вообще общие имена это ок и помогают при переходе или чтении
[14:52:18] <Typhon> а то вот на руби — inject вместо reduce и collect вместо map приняты
[14:54:48] <gds> блин, как так?  collect == map?  серьёзно?  а map у них это что?
[14:57:06] <Kakadu> в С# fold называется Aggregate
[14:59:23] <gds> ну, aggregate ещё можно понять и простить.
[15:15:21] <Typhon> gds: алиас к collect. но просто чаще используется (почему-то) collect.
[15:15:41] <Typhon> в руби вообще много алиасов, и к некоторым методом аж по 4ре названия есть
[16:29:48] <gds> на битбакете за мной следят сиськи.  пруф: http://tinyurl.com/5svgxat
[17:00:35] shaggie вышел(а) из комнаты
[17:01:10] shaggie вошёл(а) в комнату
[17:08:43] <Kakadu> gds: причем исключительно за тобой следят
[17:10:36] <f[x]> wth mikmatch не дефайнит отдельный подпакет для синтаксиса?
[17:17:58] f[x] abusing camlunity: у кого есть twitter - спросите mjambontech пуркуа бы не сделать подпакет syntax?
[17:23:46] shaggie вышел(а) из комнаты
[17:24:01] shaggie вошёл(а) в комнату
[17:30:30] <ermine> мда, как же все очевидно, что для парсинга не нужны ни бэктрекинги, ни функции peekи и тому подобная малодушная галиматья
[17:31:32] ermine упоенно пишет парсинг и открывает новые открытия
[17:32:05] <ermine> массивы в стриме тоже не нужны
[17:32:59] <gds> s/упоенно/упорото/ ?
[17:33:35] <f[x]> Typhon: я смотрю на тебя!
[17:33:38] <ermine> не, я упиваюсь своим занятием!
[17:34:55] <ermine> монады кстати тоже не нужны :)
[17:35:08] ermine глумливо смотрит на gds
[17:35:19] <f[x]> Typhon: http://paste.in.ua/3190/
[17:35:35] <f[x]> скрипач не нужен!
[17:36:12] <ermine> да, если скрипач - это тот, кто пишет скрипты
[17:36:51] <ermine> жалко вот, что выпить нечего
[17:38:29] <ermine> да еще и давненько не пила, почти полгода, хм
[17:39:17] <Kakadu> я тут начал больше уважать разрабов ОпенОффиса
[17:39:36] <Kakadu> писать конвертилку на формат у которого нет спецификации --- очень геморно
[17:40:07] <gds> ermine: а что тут глумиться?  манатки никогда не были необходимым инструментом для чего бы то ни было.
[17:40:12] <ermine> кстати, а как это будет выглядеть в глазах умных и не очень умных людей, если я в свою репу залью изменения, никак не связанные по истории с тем, что лежало в репе уже, а будет практически новая репа, где старая история обрывается и начинается новая?
[17:40:56] <Kakadu> ermine: может пересоздать репу?
[17:41:33] <ermine> Kakadu: ну вот я и спрашиваю, это же репа xml в моем гитхубе
[17:41:38] <ermine> с новым парсингом
[17:42:53] <ermine> dthcbb 3.0, если посчитать число концептуальных изменений подхода
[17:43:09] <ermine> версия
[17:43:20] <Typhon> f[x]:     что?! я проспал всё, что надо? %)
[17:43:46] <Kakadu> ermine: я думаю, что можно залить влоб, всёравно никто не заметит)
[17:44:27] <ermine> Kakadu: ну ок, залью поверху, толстая репа внушает больше доверия
[17:44:56] ermine пошла удалять peek и внедрять новый метод
[17:46:05] <f[x]> Typhon: присунь патч http://paste.in.ua/3190/ в @mjambontech
[17:46:11] <ermine> Kakadu: а как у тебя с лаблкути?
[17:46:47] <Typhon> а дисклеймер?
[17:46:50] <Typhon> в каком проекте?
[17:47:13] <Typhon> mikmatch, ok
[17:47:22] <Kakadu> ermine: вот вчера пытался минимизировать конструкторы
[17:47:58] <Kakadu> ermine: понял как она должна на самом деле выглядеть и переписываю потихоньку
[17:48:34] <ermine> Kakadu: давай, в mltls_stub.c уже глянул?
[17:49:26] <Kakadu> глянул, понял, записал в баг, и даже получил от gds по мозгам за то, что неправильно ребя понял и записал в баг хрень
[17:49:34] <Kakadu> ребя <- тебя
[17:50:36] <ermine> >.<
[17:50:38] <f[x]> да, mikmatch
[17:52:33] <f[x]> а, он же на хабе есть, можно там в него потыкать
[17:56:54] <f[x]> Typhon: thx
[17:58:16] <Typhon> poor's man password management, btw: gpg -d pd.txt.gpg | grep -A1 twitter | grep -v twitter | awk '{ print $2 }' | pbcopy
[17:58:19] ermine написала тут дленную телегу, чтобы задать вопрос, поняла ответ и стёрла телегу
[17:58:21] <ermine> спасибо
[17:58:30] <Typhon> *poor man's
[18:01:26] <f[x]> ermine: спасибо в карман не положишь!
[18:01:43] <f[x]> Typhon: осиль наконец vim-gpg
[18:04:15] <Typhon> emacs же
[18:06:29] <ermine> а еще вот при писании своего парсинга я постоянно глажу своего таракана, который часто напоминает мне, что передаваемые функции не инлайнятся
[18:07:16] <Kakadu> а что за метафора про таракана?
[18:08:56] <ermine> у есть же такой таракан, из-за которого и монады в пищу ему не годятся
[18:11:13] <ermine> Kakadu: помнишь статью про опасность слишком партиал аппликешности? Там рядом была статья про монады, в котором были схожие нотки печали
[18:11:35] <Kakadu> ermine: про манатки не читал.......
[18:11:36] <ermine> в которой
[18:11:50] <ermine> ща найду
[18:11:55] <gds> а зачем использовать монады там, где нужен супер-быстрый код (а именно, в 2% софтин)?
[18:12:44] <Kakadu> gds: я не распарсил\
[18:12:48] <ermine> http://ocaml.janestreet.com/?q=node/23
[18:13:47] <gds> Kakadu: есть софтины (программы, библиотеки).  Есть 2% из них.  В 2% из них требуется супер-быстрый код, по некоторым статистикам.  Моё утверждение: в тех 2% программ можно обойтись без монад.
[18:13:58] <ermine> gds: монады там обычно где парсят методом break >> drop >> break
[18:14:32] <Kakadu> а как связаны монады с супер-бестрым кодом?
[18:14:36] <Kakadu> быстрым*
[18:14:44] <ermine> gds: я долгое время пыталась как-то сочинить апи в таком стиле, но быстро увядала
[18:15:51] <gds> ermine: можно и так парсить, а можно и нарулить что-то получше.  в некоторых случаях break >> drop вполне удобно, в некоторых нужно другое, через автоматы-таблицы-прочее, тогда манатки будут только клеем, соединяющим парсер, вход и выход.
[18:16:39] <gds> меня больше забавляет другое: тут -- http://udpn.livejournal.com/56866.html -- меня почему-то игнорируют.  бида-бида.
[18:17:11] <ermine> gds: ну по-другому тоже быстро увядала, когда приходилось в каждой функции тщательно следить за EOF, пустым стримом и прочими неприятностями
[18:18:00] <Typhon> gds: правильно было бы "неправильно реализванные оо-языки…"
[18:18:34] <Typhon> надо заслать в тред http://gds.livejournal.com/54767.html
[18:18:54] <gds> ненене, это пока не надо!  хочется посмотреть, до чего люди сами дойдут.
[18:19:09] <gds> но не отвечают.  хнык хнык.
[18:19:55] <gds> ermine: если делать на комбинаторах, то не следи за EOF в каждой функции, а сделай комбинаторы нужные.
Вообще, надо бы мне кое-какие усилия приложить, чтобы сделать хреньку, позволяющую писать код на комбинаторах так, чтобы они, где возможно, исполнялись во время компиляции.  Или сразу порекомендовать взять metaocaml.
[18:21:40] ermine напряженно пыхтит над центральным автоматом парсинга
[18:22:26] <ermine> gds: комбинаторы тоже давить
[18:22:35] <ermine> это исчадие хаскиля
[18:23:05] <gds> это исчадие лямбда-исчисления!  ДОВИТЬ!11
[18:23:16] <ermine> а вообще надо бы дочитать книжку про парсинг, но щас опробую то что придумала
[18:23:24] <Kakadu> а ostap никто не ковырял?
[18:23:24] <gds> только переменные, только процедуры!
[18:23:47] <ermine> gds: знаю про лямбда, но повсеместную практику ввел именно хаскиль
[18:24:14] <gds> мне покласть на повсеместную, у меня своя практика, там комбинаторам есть место.
[18:24:21] <ermine> только комбинаторы ничего не знают про чанковый стрим и не должны знать
[18:24:58] <ermine> gds: и как ты применяешь комбинатор K или S?
[18:25:09] <gds> кстати, только сегодня думал запилить "предикаты", типа pred_or : ('a -> bool) -> ('a -> bool) -> ('a -> bool).  тоже комбинаторы.
[18:25:35] <gds> я чуть другие комбинаторы применяю, более нужные мне.
[18:26:34] <ermine> gds: не, давай поговорим про K, известно что Kxy = x, тут спрашивается, куда девается y?
[18:27:16] <gds> в неиллюзорную топку локалхоста, разумеется.  Там его сразу делят на ноль, а прах развеивают над центральным процессором.  Думаешь, откуда пыль в системнике?
[18:29:01] <ermine> не, такой малодушный ответ не интересен
[18:29:23] <ermine> терять аргумент как-то грубо
[18:31:26] <ermine> ладно, цамлить дальше
[18:33:46] <ermine> а вот комбинатор S - аппликативный функтор
[18:34:01] <ermine> с ним проще, с K сложнее
[18:36:05] <gds> в принципе да, есть загон про квантовые вычисления и потерю информации -- типа того, что на квантовых компьютерах реализуются только обратимые алгоритмы.  но мопед не мой, если чо.
а в текущих реалиях -- ну, теряется аргумент, и что?
[18:38:50] <ermine> gds: что ты там читаешь про теорию категорий? самого манина?
[18:41:31] Kakadu вышел(а) из комнаты
[18:42:21] letrec вышел(а) из комнаты
[18:42:46] <gds> ermine: не, маклейна.
[18:43:04] <gds> манин, как я помню, про слегка другое любил.
[18:43:06] letrec вошёл(а) в комнату
[18:43:28] <ermine> gds: а как же архисложная математика? неужели шпрехаешь?
[18:43:59] <ermine> gds: а есть пдф или двавю?
[18:44:28] <gds> кстати, категории очень неравномерно вкатываются.  прорывами какими-то.  буквально вот, месяц не пытался вникнуть, а потом подумал -- оппа, и понятно.
[18:44:59] <gds> ermine: не, математику не очень.  В принципе, почти во всём можно разобраться, но вот нужно ли.
[18:46:56] <ermine> gds: если там есть про теорию вычислений Скотта и всё вокруг этого, то вполне та еще еда для мозга
[18:48:13] <ermine> а лямбда исчислений - лишь начало этой науки
[18:48:49] <gds> не, я глубоко не лезу.  предпочитаю, чтобы оно как бы само входило.  вон, [диджея исаака] эквалайзера понял месяц назад, надо что-то другое читать.  на очереди adjoint functors и yoneda lemma (да!  я туп!).
[18:49:33] <ermine> gds: ну! пдф!!!
[18:49:41] <gds> ну!  не могу найти!
[18:49:55] <ermine> Typhon: пдф езь?
[18:50:53] <ermine> вот так всегда
[18:51:10] <ermine> ладно, тогда книжку про парсинг дочитать
[18:51:31] <ermine> она 600+ страниц, я пока только первую сотню прочитала
[18:56:08] <Typhon> ermine: какой? %)
[18:56:49] <Typhon> бтв, вот-вот выйдет печатный русский tapl, а пока можно склонировать репу с гитхаба и побилдить е]
[18:56:53] <Typhon> её
[19:01:50] <ermine> Typhon: все
[19:02:32] ermine не жадная, но предпочтет только пдфы да djvu
[19:02:57] <ermine> а что именно читать - потом разберемся
[19:06:42] <Typhon> ermine: https://github.com/squadette/tapl-ru/tree/went-to-print не совсем pdf, но собрать пдф можно %)
[19:09:11] <gds> ermine: наш лося.  djvu в приличном качестве (характерное свойство: размер порядка 3.4Mb).
[19:09:36] <gds> отвлёкся на кодинг, и внезапно пришла мысль о том, где оно у меня спрятано.
[19:10:44] <ermine> Typhon: ладно, щакопаю ссылку, а что это?
[19:13:33] <ermine> а, тапл же
[19:13:53] <gds> ermine: если Typhon даёт ссылку, её надо читать!  Я, вон, даже "бананы и линзы" начал читать сегодня!
[19:14:59] ermine пишет парсинг дальше, табличный
[19:18:02] <gds> ermine: смотри, я сейчас маклейна прячу, а потом забуду, где он!
[19:19:17] <ermine> gds: дай!
[19:20:38] <Typhon> могу маклейна бумажного дать %)
[19:20:42] <Typhon> один фиг не осиливаю пока
[19:20:47] Typhon вышел(а) из комнаты
[19:22:17] <gds> ermine: в чятик в ууе?  Скинь емыло в приват (либо я тебе), ибо захостить негде/гемор.
[19:23:42] <ermine> а, емыло!!!
[19:24:06] f[x] напоминает про camlunity::swap :)
[19:25:24] <ermine> gds: ermine.pp;ru?
[19:25:53] <ermine> шота тут не вижу
[19:26:02] <gds> swap -- вариант, но rsync лень вспоминать.
[19:27:09] <ermine> gds: я чота щас читаю невнимательно
[19:27:26] <ermine> ну в общем ник собака тот домен
[19:27:51] <gds> понял, отправлю.
[19:28:39] <ermine> в горгоне будет нормальный файлтрансфер
[19:29:58] <ermine> вчера была годовщина кстати вашего домена
[19:30:17] <ermine> а вы выпить даже не удосужились
[19:30:51] f[x] выпил смородинового вина :)
[19:38:43] letrec вышел(а) из комнаты
[19:40:32] Kakadu вошёл(а) в комнату
[19:41:03] <gds> неплохие новости: в первоклассный модуль запихиваются только те топлевел-значения исходного модуля, которые присутствуют в типе модуля, которым ограничивают.
[19:41:42] <ermine> а как вы относитесь к списку, который обязан быть непустым как (hd, tl)?
[19:42:34] <gds> вчера аж на[ш]кодить таковой думал.
[19:43:34] <ermine> а что получилось?
[19:43:50] Kakadu начал читать летом маклейна, но быстро бросил
[19:44:18] Kakadu начал летом читать TAPL но тоже быстро бросил
[19:44:43] <ermine> хде ж он
[19:44:46] <ermine> маклейн
[19:44:51] <ermine> Kakadu: на бумаге?
[19:44:58] Kakadu летом начал читать Ведьмака, но когда кончились каникулы --- бросил
[19:45:01] <Kakadu> ermine:  неее
[19:45:25] <ermine> Kakadu: дай пдф
[19:45:26] <gds> получилось то, что терминал был в 6м, а я лежал, и мне было лень :)  А так -- думал, как это расширить на случай n элементов статически.  Уже понял, надо подумать только.
[19:46:35] <ermine> gds: вроде было что-то первоклассно-типизированное на эту тему
[19:46:36] <Kakadu> f[x]: как там rsync ом пользоваться?
[19:47:40] <ermine> какой еще рсинк, гит или напрямик или емылом
[19:47:44] <gds> ermine: ты криво дала емейл, я криво понял емейл, вон, только сейчас отлуп пришёл.  попробуем ещё.
[19:47:59] <f[x]> rsync camlunity.ru::swap
[19:48:05] <ermine> gds: посмотри в хуизе домена
[19:48:39] <Kakadu> f[x]: а ermine скачивать будет?
[19:49:01] <gds> ermine: смотри в мыльной коробочке
[19:49:09] <f[x]> я властно скажу - конечно будет
[19:49:09] <ermine> а я не умею пользоваться рсинком, вот
[19:49:48] <ermine> а что запускать?
[19:50:16] <Kakadu> я хз
[19:50:42] <ermine> письмо пришло! от самого gds!!!
[19:50:59] <gds> вот!  И так будет с каждым/каждой!
[19:51:39] <ermine> пасиб
[19:51:55] <ermine> а у вас с какаду один и тот маклейн?
[19:52:16] <Kakadu> ermine: дурацкий вопрос так как это проверить из нас троих можешь только ты
[19:52:22] <gds> ваистену.
[19:53:29] <ermine> Saunders\ Mac\ Lane\ -\ Categories\ for\ the\ Working\ Mathematician.djvu
[19:54:29] ermine на всякий случай проинсталлила rsync
[19:54:41] <gds> было забавно, говорят, когда безработный математик читал эту бумажную книжку.
[19:57:30] <f[x]> хых, у меня какая-то тоненькая бумажная книжка есть по ТК, я её до сих пор не осилил
[19:58:45] <ermine> f[x]: кто аффтар?
[19:58:53] <f[x]> пирс кажется
[19:59:03] ermine смотрит в спеку по yaml
[19:59:17] <ermine> как бы бнф в табличку перегнать
[20:10:01] <ermine> у yaml число бнфов впятеро превышает чем у хмля
[20:12:28] <ermine> 211 против 80
[20:30:48] <Kakadu> что-то у меня сегодня провальный день дя шахмат
[20:30:51] <Kakadu> нада пойти попрогать
[20:33:58] <f[x]> FUUU
[20:36:06] <gds> f[x]: если не сложно, напомни, как там полуморфный Pervasives.compare доводить до мономорфного так, чтобы компилятор знал тип?
[20:39:55] <f[x]> аннотацию на один из аргументов
[20:45:21] <gds> let mycompare (x : int) y = compare x y ?
[20:48:17] <f[x]> угу
[20:50:31] <gds> благодарю, так и сделаю.  проверять не буду.  (какой же я легковерный!)
[20:50:40] <f[x]> :)
[21:08:47] ermine вышел(а) из комнаты
[21:43:01] Typhon вошёл(а) в комнату
[21:46:58] <Typhon> там это, mjambon спрашивает, "а нафига это!?" :-)
[21:47:20] <Typhon> что ответить? или уже есть канал связи более вменяемый?
[21:47:23] <Typhon> f[x], ^
[22:12:41] ygrek вошёл(а) в комнату
[22:25:31] shaggie вышел(а) из комнаты
[22:39:04] <Kakadu> что-то  я туплю
[22:39:13] <Kakadu> вот так вызываем камлёвый метод из си
  callback(caml_get_public_method(foo, hash_variant("bar")), foo);
[22:39:26] <Kakadu> а если у него есть аргументы, то куда их девать?
[22:40:11] <gds> callback вызывает любую лямбду.  есть функции типа callback*, в том числе передающие аргументы.
[22:42:17] <Kakadu> gds: т.е. специфика при вызове метода в том, что первым аргументом надо передать объект, а потом остальные параметры?
[22:43:16] <gds> ет, первым аргументом передаётся лямбда.  а дальше -- см. другие функции с именем, начинающимся / похожим на callback.
[22:44:42] <Kakadu> я имел ввиду первый аргумент лямбды.....
[22:47:55] <gds> caml_get_public_method берёт лямбду, а дальше, через callback*, указываются аргументы к ней.  рекомендую посмотреть в мануле про сишечьку по ключевому слову "callback", там всё кошерно описано.  я многое забыл, сам туда бегаю по нужде.
[22:50:22] <Kakadu> я просто смотрю на мануал и мне кажется что про параметры методов недосказано и нужно догадываться
[22:53:29] zert вышел(а) из комнаты
[22:54:03] <gds> а, вот кстати да.  Вспомнил, почему всё моё естество отказалось выдать точный ответ -- потому что сам не разбирался.  Имхо -- тестить надо (по идее, я подсказал правильно, но хз), либо смотреть на готовые биндинги (например, camlidl делает что-то между COM (дадада! шок!) и окамловскими объектами).
[22:55:05] <Kakadu> ща заюзаем метод научного тыка
[22:56:39] <gds> рекомендую дикое сочетание -- один unboxed, один float, один boxed, и чтобы метод к ним разумно обращался.
[22:57:45] <Kakadu> ты про что сейчас? про параметры?
[22:58:40] <gds> параметры камлометода.
[22:59:14] <Kakadu> к сожалению  не знаю что такое boxed и unboxed про камло
[23:00:04] <gds> int, float и какой-нибудь составной объект.
[23:02:09] <gds> составной объект -- например, в камле объявить type myrecord = { a : int } и в сишечьке выделить под эту запись место через caml_alloc_*, заполнить Field( ... , 0) (или как-то так; читать надо, забыл), и передать данное в метод.
Впрочем, если лень, то просто int и float покатят, копирование double -> ocaml float делается каким-то макросом.
[23:06:11] Typhon вышел(а) из комнаты: Replaced by new connection
[23:06:13] Typhon вошёл(а) в комнату
[23:06:31] arhibot вошёл(а) в комнату
[23:06:47] arhibot вышел(а) из комнаты
[23:17:45] gds вышел(а) из комнаты
[23:23:18] <Kakadu> очень интересно
  caml_callback2(meth, obj, arg1);
  caml_callback(meth, obj);
первый вариант падает, а во втором тело метода не отрабатывает
[23:35:32] shaggie вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!