I want something like ```haskell data NT :: (Type -> Type) -> (Type -> Type) -> Type appNT :: NT f g -> f a -> g a ``` and some way to generate arbitrary values of type `NT f g`. Any idea how this might be done?