cats.free
Free[S, ?] has a monad for any type constructor S[_].
Free[S, ?]
S[_]
Suspend a value within a functor lifting it to a Free.
Lift a pure value into Free
Suspend the Free with the Applicative