A]. Волею судеб потребовалось мне иметь для нее Bracket. Изучив fs2 и дуби решил сделать недостающие операции элементами алгебры. Но беда приключилась с bracketCase. У него три параметра типа и он выглядит вот так:
case class BracketCase[F[_], R, A](
acquire: Free[Alg[F, ?], R],
use: R => Free[Alg[F, ?], A],
release: (R, ExitCase[Throwable]) => Free[Alg[F, ?], Unit]
) extends Alg[F, A]
При паттерн матчинге R теряется и превращается в Nothing и Any в зависимости от варинтности. Есть ли простой способ как-то получить доказательство того, что результат acquire и параметр use имеют один тип?
Фри/фриир монады в принятой форме не поддерживает расширение языка рекурсивными элементами. Включая error/bracket и всё остальное
Обсуждают сегодня