Juan-Carlos Gandhi (
juan_gandhi) wrote2021-02-21 01:18 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
вопрос по Котлину
Как вообще определить какой-нибудь, скажем, <code>interface Magma<T></code>, с единственной операцией, чтобы можно было расширять классы, делая их магмами. Те же Int, String, List, все такое. И чтобы можно было вообще писать <code>fun something<T : Magma>(T a, T b) {...}</code>
Пробовал и так и сяк. Что-то не получается, чтобы элементарно. Понятно, что я Котлин еще не усвоил. Но вообще богатый язык. Богатый.
Пробовал и так и сяк. Что-то не получается, чтобы элементарно. Понятно, что я Котлин еще не усвоил. Но вообще богатый язык. Богатый.
no subject
Это типичный type class, Котлин их вроде напрямую не поддерживает, но есть Arrow-kt https://arrow-kt.io/
https://arrow-kt.io/docs/arrow/typeclasses/semigroup/
no subject
Подход оценил, но мне кажется, он дефективен. Вся эта хрень работает только внутри .run()? А расширить класс, чтобы снаружи было доступно. Не, я понимаю проблему. Может быть, так и надо вообще. Может быть, с таким подходом и мои категории будут выглядеть реалистичнее. Надо еще поизучать, шо там в скале-3.