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

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

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

[identity profile] xeno-by.livejournal.com 2013-04-18 06:25 am (UTC)(link)
Было бы круто, если бы в Скале были union types. В доте (новом калькулусе для Скале), впрочем, есть.

[identity profile] xeno-by.livejournal.com 2013-04-18 06:30 am (UTC)(link)
К слову, если мне не изменяет память, лабы (lubs = least upper bounds) в Скале могут быть структурными типами. Т.е. тип выражения List(baloon, butterfly) скорее всего будет List[AnyRef { def fly: Unit }]. Сейчас не за компом, так что точно проверить не могу.