2017-10-25 8 views
1

g aは具体的なタイプです。私は[g (m a)] -> [m (g a)] -> m [g a]をやっていると思います。最後のステップはsequence :: Monad m => t (m a) -> m (t a)で行うことができます。どのように私は最初のステップを達成するだろうか?そう、あなたが手でこれを記述する必要はありませんので、 MonadRandom m => [g(m a)] - > m [g a]

sequenceLEdge :: Functor f => LEdge (f a) -> f (LEdge a) 
sequenceLEdge (l, r, act) = fmap (\v -> (l, r, v)) act 

はおそらく FoldableTraversableトリプルのためのインスタンスと大きなタプルをそこにする必要がありますが、今のところありません。

+2

'トラバースシーケンス 'は機能しますか? – Ryan

+2

'g 'に制約がありません。これは不可能です。 'g(m a)'を 'm(g a)'にするにはどうすればいいですか?それは 'g 'が何であるかによって決まります。 – amalloy

+0

gは実際にはhttps://hackage.haskell.org/package/fgl-5.6.0.0/docs/Data-Graph-Inductive-Graph.html#t:LEdge – chronologos

答えて

4

それは非常に簡単です。 ..

関連する問題