On Fri, 20 Feb 2004, Matthew Morvant wrote:

> I am trying (and have been for quite some time) to repair a broken Haskell
> script.� I keep getting stuck on �Last generator in do {...} must be an
> expression�.� I am betting that this is not uncommon.� Can someone please
> help me understand?
>
> code5 :: Parser
> code5 = do
>          dd <- code3
>          do ddd <- code3
>          do dddd <- code3
>          return "ce"
>

The author appears to want this (braces and semicolons included for
clarity):

code5 = do {
            dd <- code3;
            ddd <- code3;
            dddd <- code3;
            return "ce"
           }

which will assign the results of code3 3 times in succession to dd, ddd,
and ddd before returning "ce". Of course, you /could/ just write that as:

do {code3; code 3; code 3; return "ce"}

Unless I misunderstand the intent here?

> code4 :: Parser
> code4 = do
> ����������� ����������� dd <- code3
> ����������������������� do dde <- code3
> ����������������������� ����������� digit
> ����������������������������������� ddd <- many (do digit)
> ����������������������������������� q <- code5
> ����������������������������������� return (q : "ss")
>

Attempting to grok this suggests I might. Is code3 supposed to take a
parser as a parameter?

-- 
[EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to