FreeK

final class FreeK[F[_[_], _], A](val unwrap: Free[[_] =>> F[[_] =>> FreeK[F, _$4], _$5], A])

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

Value members

Concrete methods

def >>[B](fb: => FreeK[F, B])(implicit AIsUnit: A =:= Unit): FreeK[F, B]
def >>=[B](f: A => FreeK[F, B]): FreeK[F, B]
def flatMap[B](f: A => FreeK[F, B]): FreeK[F, B]
def map[B](f: A => B): FreeK[F, B]

Concrete fields

val unwrap: Free[[_] =>> F[[_] =>> FreeK[F, _$4], _$5], A]