Size: a a a

2021 January 13

OB

Oleg B in dlang.ru
Dark Hole
Конкретику
в некоторых языках есть такая история, что ты не шаблонный метод делаешь а указываешь некоторый класс типов, которые может принимать метод, например
void foo(Number)(Number x)
в D этот Number ничего не значит, а например в эквивалентом синтаксисе хаскеля для Num будет проверяться наличие методов сложения/вычитания и тд
источник

OB

Oleg B in dlang.ru
000Sanya
Вот именно что мы можем проверить, но мы от этого не узнаем, тот ли смысл у метода
выглядит как утка, крякает как утка, значит утка
источник

OB

Oleg B in dlang.ru
duck typing как оно есть
источник

OB

Oleg B in dlang.ru
000Sanya
Вот именно что мы можем проверить, но мы от этого не узнаем, тот ли смысл у метода
ну а иначе, ты привязываешься к иерархии наследования (имплементации) некоторого интерфейса и мы приходим к ООП
источник

0

000Sanya in dlang.ru
Ну это и плохо, если автор не подразумевал такое использование метода
источник

0

000Sanya in dlang.ru
Oleg B
ну а иначе, ты привязываешься к иерархии наследования (имплементации) некоторого интерфейса и мы приходим к ООП
Отличие тайпклассов в том, что их можно реализовать со стороны
источник

OB

Oleg B in dlang.ru
000Sanya
Ну это и плохо, если автор не подразумевал такое использование метода
интересно... а как ты проверишь статически во время компиляции намерения автора метода?
источник

OB

Oleg B in dlang.ru
000Sanya
Отличие тайпклассов в том, что их можно реализовать со стороны
что это значит?
источник

OB

Oleg B in dlang.ru
"со стороны" именно
источник

0

000Sanya in dlang.ru
Oleg B
что это значит?
Точнее так, за тайпклассы не ручаюсь
источник

0

000Sanya in dlang.ru
Но как в расте
источник

0

000Sanya in dlang.ru
Трейты реализуются отдельно от типа
источник

DH

Dark Hole in dlang.ru
000Sanya
Отличие тайпклассов в том, что их можно реализовать со стороны
И хорошо если автор просто не указал что его можно так использовать
источник

0

000Sanya in dlang.ru
Да, тайпклассы тоже реализуют явно
источник

0

000Sanya in dlang.ru
То есть отличие от интерфейса в том, что реализация трейта(тайпкласса) может находиться вообще в другом коде
источник

0

000Sanya in dlang.ru
Но она должна быть
источник

0

000Sanya in dlang.ru
А это нас защитит от того, что мы можем получить не утку
источник

DH

Dark Hole in dlang.ru
Предвижу проблемы
источник

DH

Dark Hole in dlang.ru
Например с вольдеморт типами
источник

0

000Sanya in dlang.ru
Dark Hole
Например с вольдеморт типами
Ну я их не очень люблю, ибо мы тогда не можем сказать что возвращаем
источник