Size: a a a

2021 May 18

ŹR

Źmićer Rubinštejn in pro.elixir
Где расходятся то?
источник

Е

Евгений in pro.elixir
Утиная - это номинальная или стурктурная?
источник

LL

Lama Lover in pro.elixir
Ни та и ни та
источник

Е

Евгений in pro.elixir
То есть они пересекаются?
источник

LL

Lama Lover in pro.elixir
Что?
источник

AB

Alex Bubnov in pro.elixir
чот опять всё смешалось, и ладно бы вы про какие-то значимые различия разговаривали.

алсо,
C++ is an interesting hybrid, actually. At a base level, C++ is nominatively typed--two classes with different names are not considered equivalent; and subtyping must be explicitly declared (via inheritance). However, the template system uses structural typing--any type can be an argument to any template; and the compiler won't complain unless a particular instantiation of a template is incompatible with its declaration. (See LatentTypesSmell for more on this). 

https://wiki.c2.com/?NominativeAndStructuralTyping
источник

LL

Lama Lover in pro.elixir
Ну темплейты это просто умная кодогенерация. Не уверен что темплейтинг можно относить к самому языку, потому что они вообще тьюринг-полные
источник

Е

Евгений in pro.elixir
Я не понимаю почему C++ в википедии объявлен языком с номинальной типизацией и там же объявляется
C++ template functions exhibit structural typing on type arguments.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вот почему номинальная
https://run.dlang.io/is/wmdp1K
источник

AB

Alex Bubnov in pro.elixir
утиная - это некая конкретная рантаймовая структурная.
источник

LL

Lama Lover in pro.elixir
Типа в скомпилированном коде в D и в C++ будут физически разные функции для разных типов
источник

Е

Евгений in pro.elixir
Шаблоны - это всего лишь способ реализации полиморфизма.
источник

AB

Alex Bubnov in pro.elixir
потому что шаблоны - это отдельный язык со своими правилами
источник

A ß in pro.elixir
утиная ортогональна номинальной и структурной, номинальность/структурность системы типов это характеристика типов данных, а утиная типизация это характеристика интерфейсов, то есть определенных для типа методов
источник

LL

Lama Lover in pro.elixir
Прочитал и задумался
источник

A ß in pro.elixir
если я все правильно помню го это номинальный и утиный язык
источник

Е

Евгений in pro.elixir
Ну так ты сделал функцию не полиморфной. Строго типизировал ее.
источник

A ß in pro.elixir
а какая-нибудь джава это номинальный и не утиный, за отсутствием лучшего термина
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну так правильно. Только в структурной системе типов поймется что A - подтип B
источник

Е

Евгений in pro.elixir
Даже если ты явно скажешь, что функция принимает только тип B?
источник