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

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

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

[identity profile] blackyblack.livejournal.com 2013-04-18 06:24 am (UTC)(link)
А ещё Питон травишь за автоматическое приведение типов...

[identity profile] falcrum.livejournal.com 2013-04-18 06:24 am (UTC)(link)
Не "наибольший", а "наиближайший" - не?

[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:26 am (UTC)(link)
Least upper bound. Наибольший это будет top, он же Any или Object.

[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 }]. Сейчас не за компом, так что точно проверить не могу.

[identity profile] metaclass.livejournal.com 2013-04-18 06:37 am (UTC)(link)
Как это на русский лучше перевести?:)
Наименьший общий тип?:)

[identity profile] aamonster.livejournal.com 2013-04-18 06:38 am (UTC)(link)
Ребе, вы забыли факин множественное наследование и агрегаты.
Три леденца + две коробки леденцов - это сколько?

P.S.:
Edited 2013-04-18 06:39 (UTC)

[identity profile] voidex.livejournal.com 2013-04-18 06:41 am (UTC)(link)
5 летающих объектов это уже потеря информации. 3 воздушных шарика и 2 бабочки это 3 шарика и 2 бабочки.

[identity profile] thedeemon.livejournal.com 2013-04-18 06:47 am (UTC)(link)
наименьшая верхняя грань.

Только странный у вас выбор направления - что внизу, а что вверху.

[identity profile] xeno-by.livejournal.com 2013-04-18 06:50 am (UTC)(link)
Я бы посмотрел как переведено в русском Types and Programming Languages

[identity profile] thedeemon.livejournal.com 2013-04-18 06:51 am (UTC)(link)
А почему он больший, а не меньший?

[identity profile] sbj-ss.livejournal.com 2013-04-18 06:55 am (UTC)(link)
Если мне не изменяет память, потому что в наших глазах мало рецепторов, отвечающих за фиолетовый участок спектра.

[identity profile] xeno-by.livejournal.com 2013-04-18 07:09 am (UTC)(link)
Никогда не задумывался, если честно. Просто когда слышишь least upper bound буквально каждый день, запоминается. Да и сабтайпинг в Скале обозначается как <:, что как бы намекает.

Я полагаю, что это из-за того, что сабтайпинг рассматривается как отношение предпорядка, обычно обозначаемое как ≤. А так как top это супертайп для любого типа, значит он меньше всех. Но это исключительно мои догадки.
Edited 2013-04-18 07:09 (UTC)

[identity profile] metaclass.livejournal.com 2013-04-18 07:20 am (UTC)(link)
Least upper - тут получается "самый низкий из высоких". И top по идее, как раз больше всех.
Т.е получается bottom <: обычные типы <: top

[identity profile] xeno-by.livejournal.com 2013-04-18 07:23 am (UTC)(link)
Да, фейспалм, спасибо за то, что поправил.

[identity profile] theiced.livejournal.com 2013-04-18 07:44 am (UTC)(link)
абстрактная математика - зло. размерности не сходятся - задача идёт нахуй.

[identity profile] metaclass.livejournal.com 2013-04-18 07:48 am (UTC)(link)
Ты же строки с числами в руби складываешь :)

[identity profile] thedeemon.livejournal.com 2013-04-18 07:51 am (UTC)(link)
>размерности не сходятся - задача идёт нахуй.

А ведь это ничто иное, как статическая проверка типов. Кто-то чужой пишет из под аккаунта айседа?

[identity profile] trueblacker.livejournal.com 2013-04-18 08:12 am (UTC)(link)
что дальше?
Айсед станет псить на стабильность?

[identity profile] arush-damage.livejournal.com 2013-04-18 08:56 am (UTC)(link)
Не, ответ будет "2 желтых штучки, красная, зеленая и синяя" %))

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

[identity profile] woldemar kuchelbeker (from livejournal.com) 2013-04-18 09:27 am (UTC)(link)
Боюсь представить, что же будет в случае сложения действительных чисел с мнимыми.

[identity profile] metaclass.livejournal.com 2013-04-18 09:42 am (UTC)(link)
Комплексное число.

[identity profile] http://users.livejournal.com/_slw/ 2013-04-18 09:54 am (UTC)(link)
а начинается всё с разрешения множимое и множитель местами менять

[identity profile] http://users.livejournal.com/_slw/ 2013-04-18 09:55 am (UTC)(link)
а сколько две кучки камней и четыре камня?

Page 1 of 3