Free monad for type constructors of kind F[_[_], _]
,
where F
's first type parameter is recursively set to FreeK[F, ?].
If we pretend that recursive type aliases are legal, then FreeK
is
equivalent to
type FreeK[F[_[_], _], A] = Free[F[FreeK[F, ?], ?], A]
This is useful for instruction sets (a.k.a. algebras, DSLs, ...) that need to refer to the type of the free program that they are embedded in.
- Companion:
- object
class Object
trait Matchable
class Any