Например, у меня есть AST вроде:
sealed trait FilterF[A]
final case class NotF[A](filter: A) extends FilterF[A]
final case class EqF[A](field: String, value: Int) extends FilterF[A]
Я хочу взять выражение типа NotF(NotF(EqF("name", "mrunleaded")))
и уменьшить его до EqF("name", "mrunleaded")
matryoshka.ana
, кажется, хочетCoalgebra
, который A => F[A]
и matryoshka.cata
хочет Algebra
, который F[A] => A
, но я думаю, что мне нужно перейти от Fix[FilterF] => Fix[FilterF]