You can use Data.Sequence.fromList to go [a] -&gt; Seq a, though.<br><br>So given<br><br>f :: Monad m =&gt; a -&gt; m b<br><br>you have<br><br>import Data.Traversable as T<br>import Data.Sequence as S<br><br>g :: Monad m =&gt; [a] -&gt; m (S.Seq b)<br>
g = T.mapM f . S.fromList<br><br>  - ryan<br><br><div class="gmail_quote">On Wed, Sep 28, 2011 at 6:20 PM, Marc Ziegert <span dir="ltr">&lt;<a href="mailto:Coeus@gmx.de">Coeus@gmx.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Thomas,<br>
this should be on the haskell-cafe or haskell-beginners mailing list. Haskell@... is mainly for announcements.<br>
<br>
<br>
You have:<br>
<div class="im">&gt; f :: Monad m =&gt;<br>
&gt;      a -&gt; m b<br>
</div>&gt; Data.Traversable.mapM :: (Monad m, Traversable t) =&gt;<br>
&gt;                          (a -&gt; m b) -&gt; t a -&gt; m (t b)<br>
<br>
So, if you define g with<br>
<div class="im">&gt; g a = do Data.Traversable.mapM f a<br>
</div> or in short<br>
&gt; g = Data.Traversable.mapM f<br>
, then the type will be<br>
&gt; g :: (Monad m, Traversable t) =&gt;<br>
&gt;      t a -&gt; m (t b)<br>
instead of<br>
<div class="im">&gt; g :: [a] -&gt; m (Seq b)<br>
</div>.<br>
<br>
Try using ghci to find these things out. It helps to get not confused with the types.<br>
<br>
<br>
Besides the missing &quot;Monad&quot; context, g misses a generic way to convert between different Traversables, which does not exist. You can only convert from any Traversable (imagine a Tree) &quot;toList&quot;; not all Traversables have a &quot;fromList&quot; function.<br>

For conversion, you might want to use Foldable and Monoid, fold to untangle and mappend to recombine; but any specific &quot;fromList&quot; function will surely  be more efficient.<br>
<br>
Regards<br>
- Marc<br>
<br>
<br>
<br>
-------- Original-Nachricht --------<br>
&gt; Datum: Wed, 28 Sep 2011 17:27:58 -0600<br>
&gt; Von: thomas burt &lt;<a href="mailto:thedwards@gmail.com">thedwards@gmail.com</a>&gt;<br>
&gt; An: <a href="mailto:haskell@haskell.org">haskell@haskell.org</a><br>
&gt; Betreff: [Haskell] mapM with Traversables<br>
<div><div></div><div class="h5"><br>
&gt; Hi -<br>
&gt;<br>
&gt; I have a function, &quot;f :: Monad m =&gt; a -&gt; m b&quot;, as well as a list of a&#39;s.<br>
&gt; I&#39;d<br>
&gt; like to produce a sequence (Data.Sequence) of b&#39;s, given the a&#39;s:<br>
&gt;<br>
&gt; g :: [a] -&gt; m (Seq b)<br>
&gt; g a = do Data.Traversable.mapM f a   -- type error!<br>
&gt;<br>
&gt; I see that &quot;Data.Traversable.mapM f a&quot; doesn&#39;t work... is this like asking<br>
&gt; the compiler to infer the cons/append operation from the type signature of<br>
&gt; g?<br>
&gt;<br>
&gt; Do I need to write my own function that explicitly calls the &quot;append&quot;<br>
&gt; functions from Data.Sequence or can I do something else that would work<br>
&gt; for<br>
&gt; any &quot;g :: Traversable t, Traversable u =&gt; t a -&gt; m (u b)&quot; given &quot;f :: a -&gt;<br>
&gt; m<br>
&gt; b&quot;?<br>
&gt;<br>
&gt; Thanks for any comments!<br>
&gt; Thomas<br>
<br>
</div></div>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br>