Size: a a a

2021 May 31

АГ

Александр Гранин... in ФП
Ну вот есть какие-нибудь два тайп класса. Компилятор может спросить у типа, работает ли этот тип с каким-то из них или даже с обоими сразу, и получить ответ "да"/"нет"
источник

АГ

Александр Гранин... in ФП
А если работает, то компилятор позволяет дергать методы, идущие с тайп классом и передавать им этот кастомный тип (на деле наоборот, но упрощая можно и так сказать)
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
Кстати, это одна из причин, почему я ушёл с пхп - и не хочу возвращаться
источник

P

Purple in ФП
Да вообще печаль :(( Сколь прекрасен Flutter, столь ужасен Dart
источник

P

Purple in ФП
Очень неадекватный на 2021 год язык с тонной сомнительных архитектурных выборов
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
А тайп-скрипт я пишу просто:
const myObj: Ord & Setoid = ...
А дальше могу выполнять действия из обоих интерфейсов
источник

АГ

Александр Гранин... in ФП
Интерфейсы, традиционно, есть динамический полиморфизм
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
В разных языках по-разному. В джаваскрипте нету интерфейсов - только в тайп-скрипт при компиляции
источник

АГ

Александр Гранин... in ФП
За интерфейсом в рантайме может скрываться настоящий объект с мутабельным состоянием. А за тайп классом ни объект, ни состояние скрываться не могут
источник

P

Purple in ФП
Я бы ТСовские интерфейсы с трудом таковыми назвал в традиционном смысле
источник

АГ

Александр Гранин... in ФП
Тайп классы ничего за собой не скрывают, они обобщают
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
тайп-классы - это унифицированная кодата (и что скрывается в реализации - мы тоже не можем знать)
источник

R

Rafael in ФП
Где-то видел, что тайпклассы в Хаскелле можно и через структуру данных с методами реализовать. Кажется в какой-то из лекций Москвина на ютюбе
источник

АГ

Александр Гранин... in ФП
Мне это ни о чем не говорит 😣
И если я буду писать туториал по тайп классам, никогда это слово не вставлю. Да вообще его никогда использовать не буду
источник

АГ

Александр Гранин... in ФП
Они превращаются в мапу конкретных методов и передаются в виде структур в клиентские функции, так что да. Но это уже в рантайме, когда компилятор все задачки на предикаты решил
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
https://t.me/fp_ru/8323
тут тоже, вроде, без классов
собственно, с этой статьи и случился "прорыв" - от классов к дата+кодата
источник

AG

Alex Gryzlov in ФП
в нетотальных языках данные от коданных тяжело отличать, а в особенности в хаскелле из-за ленивости
источник

АГ

Александр Гранин... in ФП
Вон, пусть Алекс все разъяснит
источник

АГ

Александр Гранин... in ФП
@clayrat , чем отличается трейт от интерфейса?
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
Хаскель не тотальный? А какие примеры есть тотальных языков?
Да и вообще, почему дата одних структур не может быть одновременно кодатой других?
order.invoice(...) - кодата ордера, но и одновременно дата для инвойса
источник