выгоды и возможности мы получаем ?
Смотря куда и как вводят. Можно просмотреть доклады Олега Нижникова про тэглесс файнал, например.
Ощутимая выгода - возможность написать 1 библиотеку, которая будет работать с любой системой эффектов (cats-effect, Monix, ZIO, you name it). Философские выгоды каждый придумывает сам
можно (субьективно) делать более понятные сигнатуры; ведь в нее теперь можно положить харакетристику F[_] что она делает а может и ТФ захочешь
https://podcasts.apple.com/ca/podcast/%D0%B2%D1%8B%D0%BF%D1%83%D1%81%D0%BA-87-tf-%D0%B1%D1%8B%D1%82%D1%8C-%D0%B8%D0%BB%D0%B8-%D0%BD%D0%B5-%D0%B1%D1%8B%D1%82%D1%8C/id1156356598?i=1000488464540 если хочется послушать разные мнения, вот тут умные господа рассуждали на эту тему
Чтобы иметь principle of least power, т.е. если тебе нужен map, то просишь (implicit F: Functor[F]). А если бы было что-то конкретное, то оно может хоть ракеты в космос запускать.
^ дело, типо def foo[F[_]: Functor](fa: F[A]) ‘яснее’ чем def foo(fa: IO[A]) вдруг эта IO это import scala.concurrent.{Future => IO} гадай, что IO умеет делать и зачем это в функции
import scala.concurrent.{Future => F}
Видел это своими глазами в одной (чужой) кодобазе
Обсуждают сегодня