Hello, <br><br>the state should be inside, to count, so type is ListT (State Int) (Int,Int)<br><br>the runner is then runState (runListT countCalls) 0<br><br>but [] is not of type ListT m so you need to wrap it in ListT . return<br>
<br>import Control.Monad.List<br>import Control.Monad.State<br>import Control.Monad.Instances<br><br>countCalls :: ListT (State Int) (Int,Int)<br>countCalls = do<br>  a &lt;- ListT . return $ [1..2]<br>  b &lt;- ListT . return $ [1..2]<br>
  modify (+1)<br>  return (a,b)<br><br>regards<br><br>paolino<br><br><div class="gmail_quote">2012/8/25 Henry Laxen <span dir="ltr">&lt;<a href="mailto:nadine.and.henry@pobox.com" target="_blank">nadine.and.henry@pobox.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Cafe,<br>
<br>
It seems to me there should be some simple way of doing this, but thus<br>
far it eludes me.  I am trying to combine the State and List monads to<br>
do the following:<br>
<br>
countCalls = do<br>
  a &lt;- [1..2]<br>
  b &lt;- [1..2]<br>
  modify (+1)<br>
  return (a,b)<br>
<br>
<br>
where with some combination of ListT, StateT, List, State, or who<br>
knows what would result in:<br>
<br>
([(1,1),(1,2),(2,1),(2,2)],4)<br>
<br>
assuming we initialize the state to 0<br>
<br>
Is there any way to make this happen?<br>
Thanks in advance.<br>
<br>
Henry Laxen<br>
<br>
<br>
<br>
_______________________________________________<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>