Hedgehog有一个HTraversable这样定义的类:
-- | Higher-order traversable functors.
--
class HTraversable t where
htraverse :: Applicative f => (forall a. g a -> f (h a)) -> t g -> f (t h)
它与它们的Var类型一起用于参数化类型的值是具体的还是抽象的。t有 kind(* -> *) -> *并且是一个高阶函子,尽管他们实际上没有那个类f,g并且h有 kind * -> *。我已经看到在几个不同的库中定义了相同的东西。
有没有办法摆脱这种情况?我承认我什至不知道那会做什么,而且我对镜片或普通镜片也不是很舒服Traversable。