allows instructions to refer to the type of program in which
they are embedded. That is, K will be instantiated into
FreeK[F, ?], where F[_[_], _] is a superset of this
instruction set (i.e. there is an injection from Lang
to F).
Some states need to store programs or program-producing functions.
This type parameter allows the state to talk about the type of
programs.
It will be instantiated into FreeK[F, ?], where F[_[_], _]
is a superset of the instruction set Lang (i.e. there is an
injection from Lang to F).