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

GMT+4
[00:00:16] <ermine> или даже екмашкрипта
[00:00:45] <Typhon> но зачем?!
[00:00:47] <Kakadu> скриптовое конфигурирование иногда используется для удобства моддинга игр
[00:01:12] <Typhon> Kakadu, пиши дсль ^_^
[00:01:17] <Kakadu> а на луа в вове писали мозги мобам
[00:01:22] <gds> ещё был детский прикол, когда ладонью ебошили в глаза и орали "ЛОВИ СВЕТ!111".  Ну, юзаю жсон, нахреначил поверх него и "универсальные типы" с кошерностью чуть более, чем 101%.  Ну и чо.
[00:01:38] <Typhon> всё равно ты не дашь полноценного языка таким писателям модов
[00:01:47] <Typhon> с доступом к ФС и т.д.
[00:01:57] <Typhon> то есть придётся как-то ограничивать
[00:02:04] <Typhon> и, возможно, проверять корректность.
[00:02:25] <Kakadu> а чего проверять то? let it fail
[00:02:32] <Typhon> не лучше ли постараться уместить нужно в дсл на хост-языке, чтобы проверку сделал за тебя компилятор
[00:03:02] <Kakadu> дык у писателей модов не ни компилятора, ни исходников
[00:03:07] <Typhon> ну хз, если у тебя сервак для мморпг падает, от того, что скриптописатель в переменной буквы перепутал, это да, fail
[00:03:45] <Kakadu> ОК. когда я писал про let it fail я думал о цв
[00:03:47] <gds> Kakadu: fail пользовательской программы == fail всего рантайма?  Геймеры суровы на передок.
[00:03:49] <Kakadu> циве
[00:04:33] <Kakadu> польщовательской программы нет в некотором смысле
[00:04:36] <Kakadu> есть Цива 4
[00:04:44] <Kakadu> есть настройки юнитов в xmlе
[00:04:54] <Kakadu> есть питон, который xmlи парсит
[00:05:02] <Kakadu> дофигачил нового юнита
[00:05:19] <Kakadu> и там какие-то скрипты для него прописал - сам не знаю какие - глубоко не копал
[00:05:32] <Kakadu> что-то упало - модер виноват
[00:05:49] <Kakadu> ибо это неофициальный мод
[00:06:17] <Kakadu> я где-то видел камло со слабой типизаций для скриптов а-ля баш
[00:06:21] <Kakadu> не помню где
[00:06:45] <Typhon> слабая типизация это "jopa" + 1 = 1 или "jopa1" -- такой хоккей нам не нужен!
[00:06:49] <gds> тут -- виноваты все: 1. кто дал петон для модов, 2. кто не запретил его использование там, где он роняет, 3. кто реально написал код.  Все.
[00:07:10] shaggie вышел(а) из комнаты
[00:08:55] <ermine> слабая типизация - это будт GADT
[00:09:29] <ermine> в lua это просто стэковая архитектура, суешь значения в стэк и потом их оттуда вынимаешь
[00:09:34] <gds> ermine: слабая типизация -- это расставленный везде Obj.magic.  А GADT -- это чотко.
[00:10:29] <ermine> gds: и гиморно, судя по статье прыща
[00:10:51] <ermine> там какой-то гимор с рекордами
[00:11:11] <gds> ermine: никто не заставляет использовать.  Это как раз одна из тех милых фич, которые используют только при желании.
[00:12:41] <ermine> ... при желании блеснуть живым умом
[00:14:22] <gds> кстати, кому-нибудь может будет интересно, но я со слабой типизацией дружу.  Пусть оно мне None вместо Some x выдаст -- чорт с ним.  В пределах процесса -- без фейлов.  Вне процесса -- можно уронить, зависит от "протокола".  При json/sexpr/xml и прочих безопасных -- не роняется.  "логический процесс не получил сообщения" -- и всё.  не беда.
[00:16:26] <ermine> мухлюешь с Obj.magic?
[00:17:06] <ermine> эх, продажная молодежь
[00:17:08] <gds> пока только внутри процесса, пока не мухлюю.  Потом, предполагаю, тоже не будет нужды.
[00:17:20] <gds> Obj.magic опасни.
[00:20:20] <gds> собственно, чтобы не просто "предполагать", вывесил в чятик объяву и мопед.  И всё равно, порядка трёх суток провёл в состоянии "блть как же эту хню сделать так, чтобы всё работало".
[00:22:38] <ermine> работало или скомпилилось?
[00:23:56] <gds> ermine, ну ты же понела, что "компилится => работает".  и покупаеш поллитру и теребиш ей душу.
[00:57:11] Kakadu вышел(а) из комнаты
[01:11:06] ermine вышел(а) из комнаты
[01:39:48] gds вышел(а) из комнаты
[01:45:51] ygrek вышел(а) из комнаты
[03:07:44] Typhon вышел(а) из комнаты
[03:23:44] zinid вошёл(а) в комнату
[03:35:54] digimmortal вошёл(а) в комнату
[03:36:00] digimmortal вышел(а) из комнаты
[03:36:16] digimmortal вошёл(а) в комнату
[04:41:37] digimmortal вышел(а) из комнаты
[07:33:49] komar вышел(а) из комнаты: Replaced by new connection
[07:33:49] komar вошёл(а) в комнату
[10:00:24] Kakadu вошёл(а) в комнату
[10:12:37] bobry вышел(а) из комнаты
[10:34:23] iNode вошёл(а) в комнату
[10:56:13] bobry- вошёл(а) в комнату
[10:58:19] ermine вошёл(а) в комнату
[11:12:05] shaggie вошёл(а) в комнату
[11:15:46] <bobry-> кстате у реакта последний коммит в мае
[11:27:49] <f[x]> wow https://lwn.net/Articles/455185/
[11:30:15] Typhon вошёл(а) в комнату
[12:46:29] <bobry-> ermine: а у тебя lwt с реактом собрался? у меня какая то подозрительная ошибка вылезает http://paste.in.ua/2917/
[12:47:47] <Typhon> у меня с реактом собирался. но ведь они там в этом дарксе вечно что-то пилят ^_^
[12:56:01] <ermine> bobry-: давно не обновляла lwt, лень
[12:56:32] <ermine> с месяц наверное
[12:58:04] <ermine> а нет, меньше месяца, пару недель назад - переходила на 3.12.1 же
[13:09:14] gds вошёл(а) в комнату
[13:35:40] <bobry-> да я новый релиз пробую собрать
[13:35:42] <bobry-> а там эта фигня
[13:35:54] <bobry-> откуда там вообще react.a если react на чистом камле
[13:36:35] <f[x]> чистый камль линкуется с грязным libc
[13:40:45] <bobry-> мерзость какая :)
[13:44:17] komar вышел(а) из комнаты
[13:48:04] komar вошёл(а) в комнату
[13:48:43] <bobry-> мда, как оказалось ментейнер пакета ocaml-react просто забил на react.o и не устанавливал его
[13:53:53] komar вышел(а) из комнаты: Replaced by new connection
[13:53:53] komar вошёл(а) в комнату
[15:31:54] <Kakadu> а хваленный оазис умеет многопоточную сборку запускать?
[15:32:53] <f[x]> а что там уметь? -j 0
[15:33:26] <Kakadu> умеет, это хорошо
[15:50:30] komar вышел(а) из комнаты
[15:52:07] komar вошёл(а) в комнату
[16:18:38] digimmortal вошёл(а) в комнату
[16:18:42] digimmortal вышел(а) из комнаты
[16:18:58] digimmortal вошёл(а) в комнату
[16:24:40] <Kakadu> а с чем надо линковаться, чтобы было caml_local_roots?
[16:27:33] <f[x]> Kakadu: лучше покажи ошибку
[16:28:36] <Kakadu> http://paste.in.ua/2918/
[16:29:20] <Kakadu> http://paste.in.ua/2919/
[16:30:05] <f[x]> > ld -L .. -l lablqt -lQtGui -lQtCore ../*.o ./*.o -o main
WHUT?
[16:30:36] <Kakadu> ну а что ещё делать, если есть много вайлов *.о ?
[16:30:59] <Kakadu> как говорил мой тренер по шахматам
[16:31:08] <Kakadu> "если пижон видит шах, то он его дает"
[16:31:25] <Kakadu> так и "если пижон видит файлы .о --- он их линкует"
[16:35:52] komar вышел(а) из комнаты: Replaced by new connection
[16:35:53] komar вошёл(а) в комнату
[16:52:58] <f[x]> ocamlopt'ом и линкуй
[17:12:38] <Kakadu> блин. налинковал и open не могу сделать. Так и должно быть?
[17:16:42] <Kakadu> о, нашел мануал
[17:48:56] <gds> мягко и нежно, но про х-ь: http://belnetmon.livejournal.com/1555148.html?thread=29999820#t29999820
[17:51:53] <f[x]> орги уродцы - камля в списке выбора не было, хотя я ещё в прошлом году жаловался
[17:52:20] <gds> это да, тоже удивлён был.
[17:55:02] <komar> Х-та.
[17:55:32] <gds> дважды кэп.
[18:02:47] <Typhon> есть мнение, что по крайней мере сейчас, пока фп популярно, вот это вот "не найти программистов" — это враньё. да объявите, что пишете на окамле и х-ле, и ищете программистов — так и рекламу сами обеспечат люди в нете, и в очереди выстроятся на собеседования. причём скорее всего хорошие люди, да
[18:02:59] <komar> Да.
[18:03:03] <komar> dmz подтверждает.
[18:08:03] <gds> да.  А дальше, заманив людей, принципиально оборачиваем всё в IO и пишем как на окамле.
[18:10:33] <komar> В камле даже шаблонизатора нету!!!111111
[18:10:40] <komar> И оксиген статически собирать долго.
[18:10:48] <gds> CamlTemplate!111
[18:10:54] <komar> Сдохло!!!11111
[18:10:58] <Typhon> работает
[18:11:00] <komar> dmz же его и реанимировал вроде.
[18:11:01] Typhon проверял
[18:11:11] <komar> А, ну тогда все нормально.
[18:11:18] <komar> Оксиген тоже нормально собирается, я пробовал.
[18:11:18] <gds> komar: ну ты как будто не некрофил.  на камле пишешь, значит, а camltemplate сдохло?
[18:11:18] <Typhon> до дмз работало
[18:11:30] <komar> gds: еще какой некрофил.
[18:11:54] <gds> ну вот.  Оно всё вот такое вот, как-то лежит, и как-то можно использовать.  Так-то.
[18:12:06] <komar> Вот. Шутки шутками, а вообще надо улыбаться и махать.
[18:12:25] <gds> впрочем, с шаблонами там как-то странно.  Помню, что хотел "всё нахрен переделать", когда были задачи генерения хтмла.
[18:12:35] <gds> а вот почему хотел -- не помню.
[18:14:07] <gds> точнее, конечно, понятно, почему хотел переделать -- потому что моей нерождённой "разметкой поверх s-выражений" это как раз очень даже годно решается.  Но не помню, было ли это единственным "за".
[18:14:51] <komar> Кстати, раз уж такая колбаса.
[18:15:04] <komar> Что модно в камле использовать, когда нужно пороллельность?
[18:18:17] <f[x]> процессы
    Всегда ваш, К.О.
[18:19:20] <komar> А для управления ими?
[18:19:40] <komar> Generic framework какой?
[18:20:02] f[x] юзает велосипед на 20 строчек
[18:20:10] <komar> Lwt_process я как свои пять пальцев, не боитесь.
[18:24:17] <gds> ну вот, если бы мне помогали, уже был бы фреймворк "parvel".  А пока там -- только внутри процесса, то есть, для логического разделения потоков-процессов-сообщений.
[18:25:17] <komar> «Если бы тебе помогали.» Деловой ты.
[18:25:36] <gds> я деловее колбасы.
[18:32:29] <digimmortal> а кому-нить удалось собрать камл 64 бита под винду? mingw 64 вроде есть уже...
[18:32:53] komar вышел(а) из комнаты
[18:34:12] <gds> в рассылке кому-то точно удавалось.
[18:35:08] <digimmortal> нужели все под линухом сидят?
[18:35:45] <gds> большинство -- да.  Как будто это что-то плохое.
А где не линукс -- там оверблд 32битный есть.
[18:37:31] <digimmortal> да не плохое, просто иногда винда удобнее
[18:37:53] <digimmortal> с 32 битами есть ряд запар под 64битной виндой
[18:43:57] <Kakadu> не, ну я не понимаю
[18:43:59] <Kakadu> вот сделал
[18:44:04] <Kakadu> ocamlmklib -o lablqt -L/usr/lib/qt4 -lQtGui -lQtCore -lpthread  cstubs.o qtstubs.cmo \
                `find ./cpp/ -name "*.o"` out/stubs.cmo out/classes.cmo out/creators.cmo
[18:44:17] <Kakadu> как посмотреть что внутри lablqt.cma?
[18:45:28] <f[x]> ocamlobjinfo
[18:48:16] <digimmortal> а что за примитивы, на которые он там ссылается? функции виртуальной машины?
[18:49:26] <f[x]> рантайм
[18:50:34] <Kakadu> http://paste.in.ua/2920/ wtf?
[18:51:13] <f[x]> а classes.cmi там есть
[18:51:15] <f[x]> ?
[18:58:39] <Kakadu> нету
[18:58:42] <Kakadu> надо?
[19:00:37] <gds> digimmortal: про запары -- согласен.  Ну, если кому-то интересен оверблд/64бит -- принимаю деньги :)  (оверблд -- это и сишечька, и сишные либы, и камлолибы)  Просто камло/mingw64 -- известно, как.  На рассылку показал, там расскажут.
[19:02:41] <Kakadu> f[x]: куда подсовывать cmi?
[19:05:14] <f[x]> Kakadu: для каждого внешне используемого модуля должен быть cmi
[19:05:27] <f[x]> так чтобы компилер его видел во время линковки
[19:05:39] <f[x]> т.е. рядом с cma должен лежать
[19:06:18] f[x] требует комиссию за предоставление чат-площадки!
[19:06:29] <f[x]> ну и ermine немного за крышу
[19:06:56] <Kakadu> f[x]: во, спасибо!
[19:07:11] <gds> ну так 32-битный оверблд -- халявный, даже гпл.
[19:07:43] <gds> много софта вполне таки dual-licensed.
[19:08:16] <gds> кстати, патчи к оверблд, делающие 64 бита, приму с радостью.
[19:08:58] <ermine> недавно получила напоминалочку за продление делегации домена в октябре
[19:09:15] ermine типа принюхалась к крыше
[19:09:32] <f[x]> ermine: а сколько там денег?
[19:09:35] <gds> (кстати, патчи отменят мою просьбу денег)
[19:09:41] <gds> ermine: кстати, тоже интересно.
[19:09:59] <gds> и да, за какой именно домен? :]
[19:10:37] <ermine> камлунити
[19:10:49] <ermine> или все три домена камлунити, жабир, хмпп
[19:11:13] <ermine> если не заводить еще парочку-другую доменов
[19:11:29] <ermine> в октябре - камлунити
[19:11:53] <ermine> а вообще я тут спич как обычно не читала с начала, а только с хайлата
[19:12:00] <gds> я бы определённо скинулся поровну на домен камлунити.  на xmpp -- хз что это такое.  на жаббир -- не знаю, пары баксов было бы не жалко точно.
[19:13:12] <ermine> а баксы нонче разве котируются?
[19:13:24] <ermine> а вообще что за разговор про крышу?
[19:13:47] <f[x]> gds продаёт патчи за баксы, ты крышуешь - получаешь откат
[19:13:54] <f[x]> мне комиссию как посреднику
[19:14:08] <f[x]> через полгодика куплю дачку на канарах
[19:14:08] <gds> учитывая, что в текущем месте валюта = "рубли пмр", мне проще считать в баксах.  Понятно, речь про эквивалент в рос.руб.
[19:14:23] <f[x]> всё чотко, бизнесс план проверенный
[19:16:05] <gds> f[x]: можно легко намутить только дачу на кайнарах, относительно рядом со мной: http://tinyurl.com/43hx28r
[19:17:21] <f[x]> гг :)
[19:17:56] <ermine> хе
[19:18:30] <ermine> рускамлпро?
[19:18:51] <ermine> это про патчи
[19:19:06] <gds> не, сильно примитивнее.
[19:19:55] <ermine> ну хз
[19:20:13] <ermine> крышевать надо юрлицу, я им не являюсь
[19:20:24] <ermine> если серьезно
[19:20:41] <ermine> а так - приложить лапу всегда вкусно
[19:21:21] <gds> а у меня, если серьёзно, не очень много времени, и делать оверблд/64бита -- это надо иметь кое-какой стимул.  Почему именно я предлагаю -- потому что 32битный вроде нормально работает.  Ну, насколько на разных виндах можно считать "нормально", конечно.
[19:22:38] <f[x]> хнык, так а как же канары?.. @_@
[19:23:08] <gds> все хотят на канары :[
[19:23:37] <gds> вот, сейчас кого-нибудь разведём на донацию аж в 15$, и все поедем.
[19:24:38] <ermine> ты букву k или m забыл
[19:25:31] zinid вышел(а) из комнаты
[19:25:47] <ermine> а то $15 даже расходы на домен не покрывают
[19:31:08] Typhon вышел(а) из комнаты
[19:34:30] <bobry-> type état =... вот это типы http://cristal.inria.fr/caml_examples/eng.html
[19:36:43] bobry- вышел(а) из комнаты
[19:54:55] shaggie вышел(а) из комнаты
[20:23:03] bobry вошёл(а) в комнату
[20:43:02] komar вошёл(а) в комнату
[20:58:09] shaggie вошёл(а) в комнату
[21:04:38] digimmortal вышел(а) из комнаты
[21:05:02] <Kakadu> нет, я сегодня долинкую эту хрень
[21:05:53] <Kakadu> потом надо подумать: то ли я делаю и не поставил ли нерешаемую задачу или прикрутить вначале параметры по умолчанию....
[21:13:49] komar вышел(а) из комнаты
[21:17:42] <f[x]> Kakadu: пушни всё репо и пни ygrek'а когда появится
[21:19:03] <bobry> кто бы мне рассказал что за Types не хватает lwt при сборке с --enable-toplevel
[21:19:05] <gds> какие-то, блин, А-Янус и У-Янус.
[21:21:02] komar вошёл(а) в комнату
[22:37:45] <bobry> хммм, ermine, ты задачки к typeclassopedia решала?
[22:38:03] bobry что то встрял на первой же, как это (->) e может являться функтором
[22:42:46] ermine промчалась 13.5 км со средней скоростью 6.3 км/ч (согласно gps) и ошалело смотрит на Kakadu
[22:44:22] <Kakadu> ermine: велик?
[22:44:53] <ermine> всё, что я умею достойного - так это трепаться тут
[22:45:22] <ermine> Kakadu: на велике с такой скоростью??? ужос!
[22:45:37] <gds> в камлолисте появился ещё один велосипед, parmap.  не гуглится пока.  ну и йенг с ним.  недоделаннота.
[22:45:51] <Kakadu> ermine: если бегом с такой скоростью то просто кошмар
[22:45:59] <ermine> на велике обычно 50-60 км и 28-31 км/ч
[22:46:51] <Kakadu> значит на роликах?
[22:48:00] <ermine> пешочком, сынок, пешочком
[22:50:20] <gds> неудивительно.  некоторые ребе показывают 8.0км/ч пешком.
[22:50:20] iNode вышел(а) из комнаты
[23:03:58] <ermine> а на роликах 18 км/ч неспеша
[23:04:58] ermine только щас посмотрела, что вопрос задавал не какаду, а bobry
[23:05:20] <bobry> ага :)
[23:06:08] <ermine> а что за педия такая?
[23:06:34] <bobry> так библия х-л type классов
[23:06:48] <bobry> http://www.haskell.org/haskellwiki/Typeclassopedia
[23:07:30] <ermine> не, вообще никаких задачек ни на одном языке программирования я не пробовала решать
[23:07:35] <bobry> я просто концептуально не втыкаю как -> это функтор
[23:07:45] <bobry> может gds знает в чем тут соль? :)
[23:08:06] <bobry> да там задачки типа "напишите инстанс функтора для (,) e"
[23:08:15] <ermine> он читал тапл, так что наверняка знает
[23:08:16] <gds> bobry: да очевидно же.
[23:08:32] <ermine> вот-вот
[23:08:48] <bobry> gds: для меня пока не очевидно, пояснишь?
[23:09:31] <gds> (->) это бифунктор -- ковариантный с одной стороны (справа) и контрвариантный с другой (слева).  Это же Hom(_, _) функтор, только в рамках той категории, которая предоставляет стрелку "->" как морфизм.
[23:10:05] bobry не знаком с теоркатом, если шо
[23:10:08] <gds> кстати, тапл не причём.  тут более глубокая медитация была.
[23:10:24] <gds> bobry: что такое функтор (не окамловский) -- известно?
[23:10:35] <bobry> формальное определение да
[23:10:37] <bobry> вырабатываю интуицию
[23:11:15] <bobry> в typeclassопедии предлагают думать про (->) e как про контекст с read-only переменной типа e
[23:11:21] <ermine> может вы про тайпкласс (-> r)?
[23:11:45] <bobry> про него самого ага
[23:11:53] <bobry> typeclassопедиа же :)
[23:12:34] <gds> проще рассмотреть категории хоть как-то.  Или есть принципиальное нежелание?  Можно рассказать и без них, конечно.
[23:12:55] <ermine> ну, учить все 101 тайпкласс ради одной теории неинтересно
[23:13:10] <bobry> gds: интересно, но чуть чуть позже
[23:13:58] <ermine> bobry: про -> r достаточно подробно написано на learnyouahaskell
[23:14:07] <ermine> и про функторы
[23:14:30] <ermine> соль - фмапить функцию
[23:15:07] <bobry> чую надо будет к нему вернуться в который раз
[23:15:48] <ermine> а я его прочитала до конца и страшно рада, что хотя бы один туториал по хаскилю _дочитала_ до конца
[23:16:51] <bobry> а где кучи х-ль библиотек, написанные после прочтения туториала?
[23:17:36] <ermine> как-нить потом, надо еще найти и окучить туториал по TH
[23:17:44] <bobry> сразу чтоли?
[23:17:50] <gds> bobry: ну вот тогда -- как-то так.  Считаем, что есть параметризованный тип t 'a (в revised syntax).  У него определена функция fmap : ('a -> 'b) -> (t 'a -> t 'b), переводящая стрелку между типами в стрелку между отображением типов ('a -> t 'a и 'b -> t 'b).  Там что-то типа квадрата можно нарисовать, если графически представлять проще (могу рассказать подробнее).  И вот, если есть отображение из 'a в t 'a, и оно такое, что для любых 'a и 'b существует fmap, то t, отображающее 'a в t 'a, является функтором.  Например, список list 'a это функтор.
[23:17:59] <gds> пока понятно излагаю?
[23:19:23] ermine вот пытается применить модуль 'a t к этим гребанным идеям и пока ничо не получается
[23:20:38] <gds> ermine: с модулями вопрос тоньше.  Там -- далеко не "универсальный полиморфизм хиндли-милнера", там модульно-специфичные штуки тоже.  Например, там внезапно existential types.  Шоке-шоке.
[23:22:32] <ermine> gds: ну я пока не понимаю как сделать что-то общее между list и array, если их представлять в виде 'a t
[23:23:14] <bobry> gds: что то концовка не понятно, почему нам не важно существование отображения из 'b в t 'b?
[23:24:06] <ermine> bobry: иди лучше на learnyouahaskell, там всё по порядку, с повторениями и вдалбивательно
[23:24:11] <gds> bobry: потому что я опустил квантор всеобщности, и для любого 'b тоже есть отображение 'b в t 'b.
[23:24:18] <bobry> ах, уже лучше
[23:26:19] <bobry> ну кстати с list и array вроде все не так плохо, ибо они вписываются в представление функтора как контейнера
[23:28:07] <gds> да вообще, контейнеры можно загнать под общую схему.  я в своём кадастре таки буду похожее делать.  ну и функторы как-то надо иметь.
кстати, Map.Make().t -- тоже функтор, и даже два.  Тот, который по ключам, принимает только мономорфизмы, а тот, который по значениям, принимает любые стрелки.
[23:30:13] <bobry> ладно, пойду почитаю таки lyah, gds -- спасибо за разъяснения
[23:30:26] <ermine> надо будет перечитать мануал по модулям
[23:31:39] <gds> так вот, функтор "(->) r", который в окамле записывается как
type f 'x 'a = 'x -> 'a
, вполне имеет преобразование 'a -> 'b, которое каждое f 'x 'a переводит в f 'x 'b.  Предлагаю найти на досуге.
[23:34:24] komar вышел(а) из комнаты: Logged out
[23:34:28] komar вошёл(а) в комнату
[23:38:00] <gds> кстати, для иллюстрации можно начертить плоскость, которую заселить типами 'a, 'b, int, list bool и прочими, а над ней начертить точку с типом 'x.  И вот, любая стрелка от 'x к типу на плоскости будет принадлежать функтору f.
А если из того, что есть стрелка 'x -> 'a и есть стрелка 'a -> 'b, следует, что есть стрелка 'x -> 'b, то получается, что " 'x -> тип_на_плоскости " это функтор.  Но это был частный случай, для "->".
[23:56:43] <Kakadu> можно написать что-нибудь типа ... ?
type 'a slot = sig
  inherit 'a
  method call :unit -> unit
end
[23:58:31] <Kakadu> и ещё, как написать f  a b где b --- подкласс а?
[23:59:00] <ermine> почитай мануал
[23:59:06] <ermine> от и до
[23:59:51] <ermine> а подкласс... когда можно кастить только в суперкласс
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!