g a
是一种具体类型,我正在考虑做[g (m a)] -> [m (g a)] -> m [g a]
,我知道最后一步可以用sequence :: Monad m => t (m a) -> m (t a)
完成。我将如何实现第一步?
答案 0 :(得分:4)
非常简单:
sequenceLEdge :: Functor f => LEdge (f a) -> f (LEdge a)
sequenceLEdge (l, r, act) = fmap (\v -> (l, r, v)) act
对于三元组和更大的元组,可能会有Foldable
和Traversable
个实例,因此您不需要手动编写,但现在还没有,所以。 ..