Size: a a a

Kotlin Community

2020 March 25

AN

Alexander Nozik in Kotlin Community
Boris Vanin
А реализации нет
Ну я ее опустил, могу поправить. Там вместо scope может быть любой класс реализующий интерфейс
источник

AN

Alexander Nozik in Kotlin Community
Сейчас допишу
источник

AN

Alexander Nozik in Kotlin Community
поправил
источник

BV

Boris Vanin in Kotlin Community
А val b = a это точно то выражение на котором надо проверять? Оно ведь для любого a будет работать
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
А val b = a это точно то выражение на котором надо проверять? Оно ведь для любого a будет работать
'a' будет не определено без правильного контекста. Как extension property
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Это декларация extension интерфейсов. Если добавить туда дженерики - будут тайп классы. Но тут надо придумать, как добавить
Мне кажется вы как то не так понимаете тайп классы 🤔
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
'a' будет не определено без правильного контекста. Как extension property
Ну, это видимо какой-то частный случай введения типа, лучше на примере вызова метода из экстеншн интерфейса или ещё лучше передача инстанса в метод, который принимает экстеншн интерфейс
источник

AN

Alexander Nozik in Kotlin Community
Alexey Otts
Мне кажется вы как то не так понимаете тайп классы 🤔
Не совсем так, как в хаскеле и скале - да. Ключевая разница в том, что оригинальные тайп-классы байндятся к типу путем подстановки компиллятором, а тут есть явный байндинг
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
Ну, это видимо какой-то частный случай введения типа, лучше на примере вызова метода из экстеншн интерфейса или ещё лучше передача инстанса в метод, который принимает экстеншн интерфейс
Согласен, сейчас подправлю на функцию
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
Не совсем так, как в хаскеле и скале - да. Ключевая разница в том, что оригинальные тайп-классы байндятся к типу путем подстановки компиллятором, а тут есть явный байндинг
Ну, скала тоже подставляет только заимпортированное, по сути не такая уж большая разница с use
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
Ну, скала тоже подставляет только заимпортированное, по сути не такая уж большая разница с use
Смысл в том, что реализацию мы подставляем явно
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Не совсем так, как в хаскеле и скале - да. Ключевая разница в том, что оригинальные тайп-классы байндятся к типу путем подстановки компиллятором, а тут есть явный байндинг
Дак в этом почти вся суть
источник

AO

Alexey Otts in Kotlin Community
Boris Vanin
Ну, скала тоже подставляет только заимпортированное, по сути не такая уж большая разница с use
Ну не только, там есть места, где он ищет
источник

AN

Alexander Nozik in Kotlin Community
Alexey Otts
Дак в этом почти вся суть
Ну так из-за этого ненависть
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
Ну не только, там есть места, где он ищет
Вот такого я бы в котлине не хотел
источник

AO

Alexey Otts in Kotlin Community
Boris Vanin
Вот такого я бы в котлине не хотел
Прикол в том, что эти места строго определенны и на самом деле нет никакой неявности
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
Прикол в том, что эти места строго определенны и на самом деле нет никакой неявности
А напомни что он ищет? Я сто лет не писал на скале
источник

AN

Alexander Nozik in Kotlin Community
Есть неявность как только начинаются орфаны
источник

AL

Alexander Levin in Kotlin Community
Alexander Nozik
Не совсем так, как в хаскеле и скале - да. Ключевая разница в том, что оригинальные тайп-классы байндятся к типу путем подстановки компиллятором, а тут есть явный байндинг
По-моему местами идея собрала худшее из двух миров. С точки зрения экстеншнов - мы размазали сигнатуру функции/проперти по целому файлу. С точки зрения тайпклассов - мы отложили слегка принятие решения по прокидыванию моноида/сумматора/whatever, а затем сиди и пиши в лучшем случае так: with(stringMonoid, intMonoid, listMonoid, ... /* skip million instances */, zMonoid) { (что не очень решает задачу, которую решают тайпклассы)

Я вижу пользу для скриптов, но дальше становится тяжело.
источник

AO

Alexey Otts in Kotlin Community
Boris Vanin
А напомни что он ищет? Я сто лет не писал на скале
Инстанс или способ этот инстанс получить, смотрит в компаньон класса и компаньон тайп класса, ну и ещё в текущий скоуп
источник