metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-04-18 09:22 am

Наибольший общий предок

Ребенок периодически компостирует мне мозги задачами на сложение чисел. Пока это просто числа, оно еще куда ни шло, но потом ей становится скучно и она добавляет к ним размерности, причем разные. Типа "сколько будет 3 воздушных шарика+2 бабочки".
Только сейчас спросонья дошло, что можно же свести объекты к общему предку и дать ответ в виде "число+тип предка". Ну как в скале - если в список добавить разных объектов, она автоматом тип к более общему сведет.
Но скажем, если из общего предка там только "объект", но у объектов есть общие свойства, например бабочки и шарики могут летать - не надо ли, в дополнение к объекту выводить еще и общие интерфейсы? В таком случае будет ответ "5 летающих объектов".

[identity profile] gds.livejournal.com 2013-04-18 09:04 am (UTC)(link)
а в окамле coercion обозначается как :> , что соответствует логике: уменьшает (точнее, не увеличивает) количество известной информации. Для объектов -- выкидывает методы. Для вариантов -- добавляет новые варианты, "размазывая" знание (раньше было известно, что A | B, а стало A | B | C, и неуверенность в том, к какому же варианту принадлежит значение типа, возросла, и без рантайм-движух (поматчить) не сведётся обратно к A | B).