我有一个数据类型和附带的函数,看起来非常像某种遍历。下面是一个简化的例子:
data Foo x = MkFoo (Bar x) (Bar x)
almostTraverse :: Applicative f => (Bar a -> f (Bar b)) -> Foo a -> f (Foo b)
almostTraverse f (MkFoo x y) = MkFoo <$> f x <*> f y假设Bar是某种不透明的类型,并且不一定是一个函数器。有没有一些类型类是almostTraverse的泛化?它不是来自MonoTraversable的otraverse,因为applicative中的结果类型不必与输入类型完全相同,也不是来自Traversable的traverse,因为传入的函数需要知道Bar,尽管它不在类型参数中。
https://stackoverflow.com/questions/57794397
复制相似问题