@@ -206,8 +206,9 @@ pKeepTerminator
206206 <|> do c <- indent; l <- last_indent
207207 if (c <= l) then return ()
208208 else fail "Not a terminator"
209− <|> do i <- getInput; if (take 1 i == "}") then return ()
210− else fail "Not a terminator"
209+ <|> do i <- getInput; let h = take 1 i
210+ if (h == "}" || h == ")") then return ()
211+ else fail "Not a terminator"
211212 <|> lookAhead eof
212213
213214notEndApp = do c <- indent; l <- last_indent
@@ -219,7 +220,7 @@ notEndBlock = do ist <- getState
219220 case brace_stack ist of
220221 Just lvl : xs -> do i <- indent
221222 inp <- getInput
222− if (i < lvl || take 1 inp == ")")
223+ if (i < lvl || take 1 inp == ")")
223224 then fail "End of block"
224225 else return ()
225226 _ -> return ()
@@ -805,7 +806,8 @@ pComprehension syn
805806pDoBlock syn
806807 = do reserved "do"; open_block
807808 push_indent
808− ds <- many1 (do notEndBlock; x <- pDo syn; pKeepTerminator; return x)
809+ ds <- many1 (do notEndBlock
810+ x <- pDo syn; pKeepTerminator; return x)
809811 pop_indent
810812 close_block
811813 return (PDoBlock ds)