Hi haskellers,<br><br>I&#39;m trying to use buildExpressionParser parser generator from ParsecExpr module of Parsec (<a href="http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#ParsecExpr">http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#ParsecExpr</a>). It works well, except for the &quot;parens&quot; <a name="ParsecExpr"></a>token parser (<a href="http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#parens">http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#parens</a>). This code (sample from Expressions part of the manual) typechecks fine:<br>
<br>expr    :: Parser Integer<br>expr    = buildExpressionParser table factor<br>        &lt;?&gt; &quot;expression&quot;<br><br>table   = [[op &quot;*&quot; (*) AssocLeft, op &quot;/&quot; div AssocLeft]<br>          ,[op &quot;+&quot; (+) AssocLeft, op &quot;-&quot; (-) AssocLeft]<br>
          ]          <br>        where<br>          op s f assoc<br>             = Infix (do{ string s; return f}) assoc<br><br><br>factor  = do{ char &#39;(&#39;<br>            ; x &lt;- expr<br>            ; char &#39;)&#39;<br>
            ; return x <br>            }<br>        &lt;|&gt; number<br>        &lt;?&gt; &quot;simple expression&quot;<br><br>but if I try to use parens:<br><br>factor  = parens expr<br>
        &lt;|&gt; number<br>
        &lt;?&gt; &quot;simple expression&quot;<br clear="all"><br>it fails to typecheck:<br><br>Couldn&#39;t match expected type `GenTokenParser s u m&#39;<br>           against inferred type `Parser Integer&#39;<br>    In the first argument of `parens&#39;, namely `expr&#39;<br>
    In the first argument of `(&lt;|&gt;)&#39;, namely `parens expr&#39;<br>    In the first argument of `(&lt;?&gt;)&#39;, namely `parens expr &lt;|&gt; number&#39;<br>Failed, modules loaded: none.<br><br>the type of expr infers to GenParser Char () Integer, and the expected type for the parens is GenTokenParser s u m (however, manual introduces it with the type <code>CharParser st a </code>expected<code>)<br>
</code><br>It seems pretty weird for me, as there are numerous examples of using parens with the buildExpressionParser (e.g. <a href="http://blog.moertel.com/articles/2005/08/27/power-parsing-with-haskell-and-parsec">http://blog.moertel.com/articles/2005/08/27/power-parsing-with-haskell-and-parsec</a>) and nobody comments such an error. I know I&#39;m missing something very simple here, maybe someone could help me with it?  Thanks in advace<br>
<br>I&#39;m using GHC 6.10.1 and Parsec 3.0.0<br><br>-- <br>Regards, Paul Sujkov<br>