Size: a a a

2021 May 18

Е

Евгений in pro.elixir
Впрочем это не относится к обсуждаемому вопросу.
источник

Е

Евгений in pro.elixir
Мне не интересно обсуждать терминологию.
источник

LL

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

LL

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

LL

Lama Lover in pro.elixir
It contrasts ... duck typing, in which only the part of the structure accessed at runtime is checked for compatibility.
источник

Е

Евгений in pro.elixir
Ерунда. Это не обязательно
источник

LL

Lama Lover in pro.elixir
Извини, чувак, но я (да и почти кто угодно тут) в вопросах терминологии википедию считаю более авторитетной, чем тебя
источник

Е

Евгений in pro.elixir
По мне так этот structural type system придумали какие-то меньшинства, кроме английского и французского нигде нет.
источник

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

Е

Евгений in pro.elixir
Я не уверен, что стоит считать статью википедии, которая существует всего на двух языках авторитетной.
источник

Е

Евгений in pro.elixir
По моему это область холиворов.
источник

Е

Евгений in pro.elixir
источник

Е

Евгений in pro.elixir
Смехота
источник

LL

Lama Lover in pro.elixir
Да, они похожи, но это разные вещи

Утиная типизация работает в рантайме и  если в коде написано a + b, то он сработает когда есть метод a.add(b)

Структурная типизация допускает, что если есть тип @type a :: %{x: x()} и тип @type b :: %{x: x(), y: y()},
то код something.x скомпилируется и для a и для b

Основная разница тут в динамичности и статичности. В утиной типизации метод a.add может появиться в рантайме
источник

LL

Lama Lover in pro.elixir
Статья про duck typing есть на большем количестве языков  и там тоже указана разница с structural typing
источник

Е

Евгений in pro.elixir
А это тогда какая типизация?
https://run.dlang.io/is/TYeIKj
источник

LL

Lama Lover in pro.elixir
А я и не знаю этот язык
Мне вообще кажется интересным как в receive отличить char и int8, которые вообще одного размера

Видимо в рантайме ставится какой-то тег
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Если ты напишешь writeln(t.y) и не скомпилируется - то структурная
источник

Е

Евгений in pro.elixir
Я фактически написал вот это:
> Структурная типизация допускает, что если есть тип @type a :: %{x: x()} и тип @type b :: %{x: x(), y: y()},
> то код something.x скомпилируется и для a и для b
источник

ŹR

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