Consider data type data A (a:Functor) (b:a, Monad). This means the free type variable a has the kind * ~> *, but the check gets an empty dictionary (thus all frees are considered of kind *)
Thus:
[x] Make a function that calculates the kinds of frees (based on the kind table and requirement table)
Consider data type
data A (a:Functor) (b:a, Monad)
. This means the free type variablea
has the kind* ~> *
, but the check gets an empty dictionary (thus all frees are considered of kind*
)Thus: