I've been doing some reading on encoding programs in free monad/free applicatives vs. tagless final. One interesting find was
https://markkarpov.com/post/free-monad-considered-harmful.html#composable - it looks like it's possible to take tagless final algebras and encode them in
Free f a
if required. It seems like that's the best of both worlds: readability via tagless final for most code, encoding and full reification in
Free f a
as/if necessary?