Anonymous
Очень больно это на практике
Anonymous
И быстро становится нечитаемым и все такое
Anonymous
Эти параметры же придется везде в явном виде руками указывать в большинстве случаев
Hog
Nikolay
Nikolay
Продался за стикеры
Bonart
Bonart
Писать без генериков - будут тонны вонючей копипасты.
Shub
Shub
впрочем, этого следовало ожидать
Shub
идеоматический код почти всегда неоптимален, а оптимальный код почти всегда неидеоматичен
Bonart
Добавляется по одному вызову оборачивающего расширения на тайпкласс
Shub
постойте, это ж C#?
Bonart
Замечу, что для F# должно выглядеть лучше - методы расширения нужны прежде всего из-за хилости вывода типов в сишарпе
Bonart
Shub
все пустотно, кроме дхармы и Учения, Учение непустотно и непреходяще. другими словами: пишешь на C#? значит, есть за что
Shub
почему ты считаешь, что это тайпклассы?
Shub
Bonart
Почему?
Shub
а где там констрейны на параметрически полиморфные типы? я там вижу просто набор интерфейсов. (я вообще C# знаю крайне фигово, может и пропустил)
Shub
так-то абсолютно то же самое и практически в том же виде выразимо на F#
Shub
тайпкласс - это способ сказать что-то в стиле "Тип 'a принадлежит тайпклассу 'TK в случае если тип 'a реализует то-то и то-то"
Bonart
Shub
можешь пальцем показать на инстанс тайпкласса и тайпкласс инстанса в этих примерах?
Shub
конечно, хорошо бы там были хоть какие-то комментарии
Bonart
Тайпкласс - ISummator, инстанс тайпкласса - IntSummator, Additive - обертка для перегузки сложения и обхода косяков вывода типов. AsAdditive метод расширения для обхода косяков вывода типов.
Bonart
Shub
Bonart
Bonart
Shub
каких генериков там нет?
Dr. Friedrich
А какие есть?
Bonart
Пардон, не у явы а у JVM
Bonart
Вся фишка для сишарпа как раз в генериках с типами-параметрами.
Bonart
У скалы тайпклассы вроде есть
Shub
ты про type erasure, что ли?
x
Shub
ладно, оставим пока жаву. я бы все же хотел, чтобы ты пояснил, каким образом интерфейс внезапно превратился в тайпкласс
Shub
ты вот написал "Тайпкласс - ISummator, инстанс тайпкласса - IntSummator, Additive - обертка для перегузки сложения и обхода косяков"
Shub
в данном случае "тайпкласс" выступает полным синонимом "интерфейсу"
Shub
Интерфейс - ISummator, реализация интерфейса - IntSummator, Additive - обертка для перегузки сложения и обхода косяков
Bonart
Bonart
в данном случае "тайпкласс" выступает полным синонимом "интерфейсу"
Неполным. Интерфейс предполагает объект с реализацией. Класс типа предполагает статический инстанс, которым служит реализация в виде структуры с нулевым размером. Это позволяет делать вызовы вида default(TClassInstance).Method. Дополнительно нужна структура-обертка, с которой сможет работать сишарповый вывод типов и сишарповая перегрузка операций.
Anonymous
Anonymous
Выкрутиться-то можно.
Shub
я с удовольствием послушаю детальные объяснения, почему никак невозможно обойтись без тайпклассов, потому что с моей точки зрения они дают прирост менее десятка процентов относительно уже существующих средств языков.
Anonymous
Shub
до сих пор про тайпклассы я разговаривал только с людьми, которые при изжоге "принял перорально 500мл водного раствора кислой натриевой соли угольной кислоты" и киснут от слова "сода"
Крылатый
Shub
пищевая сода - это натриевая кислая соль угольной кислоты
Shub
шуточка за 300
Anonymous
Мне нравятся тайпклассы за простоту и понятность, едва ли это действительно нечто, без чего нельзя обойтись. Хорошо спроектированные обычные интерфейсы не намного должны бы уступать, при условии что на параметры можно накладывать ограничения, а это почти везде так.
Крылатый
Anonymous
Но тайпклассы делают этот процесс прям приятным.
Shub
Крылатый
Или уранил нитрат
Shub
Или уранил нитрат
речь о том, что атомарных понятий нет, и для любого понятия можно попытаться сделать модель на элементарных частицах, хотя в быту мы все же говорим "вода", а не "дигидрогена монооксид"
Крылатый
Shub
из того, что я знаю про тайпклассы, следует, что есть крайне малое количество ситуаций, где тайпклассы отличаются от интерфейсов и перегрузки операторов
Shub
в 99% случаев это равнозначные и эквивалентные понятия
Anonymous
Anonymous
Только хаскель умно умеет сам догадаться какой инстанс взять.
Anonymous
Из-за чего, собственно, двух инстансов быть не можетв одном модуле
Shub
а если так, то я согласен с @vshapenko, потому что кому-то это все поддерживать, иногда - в буквальном смысле в 4 утра
Shub
я например в 4 утра социально опасен и за тайпклассы могу сделать такое, что потом всю жизнь каяться
Крылатый
Хм, ну да, и такое бывает.
Vasily
Anonymous
Крылатый
Особенно весело в 3 ночи в субботу бежать чинить ошибку во время выкладки на бой.)