I have trouble in returning a list of Figures. I want return a type of m (Maybe [Figure IO]), but the type of dv_findFigure is :: a -&gt; Point -&gt; s (Maybe (Figure s)). How can change the code below to get a s (Maybe [Figure s])?<br>
Thank you in advance!<br><br> dv_findFigure :: a -&gt; Point -&gt; s (Maybe (Figures))<br> fig_contains :: fig -&gt; Point -&gt; m Bool<br> anc :: Point<br>do<br>                     fs &lt;- dv_getSelFigs dv<br>                     fs&#39; &lt;- filterM (`fig_contains` anc) fs<br>
                     f &lt;- case fs&#39; of<br>                        [] -&gt; dv_findFigure dv anc<br>                        fig : _ -&gt; return $ Just fig<br>                     case f of<br>                       Just f&#39; -&gt; tool_dragtrack self f&#39;<br>
                       Nothing -&gt; dv_clearSel dv &gt;&gt; tool_areatrack self<br><br>  Couldn&#39;t match expected type `Figure m&#39;<br>           against inferred type `[Figure IO]&#39;<br>      Expected type: m (Maybe (Figure m))<br>
      Inferred type: m (Maybe [Figure IO])<br>    In the expression: return $ Just fs<br>    In a case alternative: fig : _ -&gt; return $ Just fs<br><br>