@@ -166,7 +166,14 @@ parseDeclaration = P.choice
166166 , parseFixityDeclaration
167167 , parseImportDeclaration
168168 , parseTypeClassDeclaration
169− , parseTypeInstanceDeclaration ] P.<?> "declaration"
169+ , parseTypeInstanceDeclaration
170+ ] P.<?> "declaration"
171+
172+parseLocalDeclaration :: P.Parsec String ParseState Declaration
173+parseLocalDeclaration = P.choice
174+ [ parseTypeDeclaration
175+ , parseValueDeclaration
176+ ] P.<?> "local declaration"
170177
171178-- |
172179-- Parse a module header and a collection of declarations
@@ -245,7 +252,7 @@ parseLet :: P.Parsec String ParseState Value
245252parseLet = do
246253 C.reserved "let"
247254 C.indented
248− ds <- C.mark $ P.many1 (C.same *> parseDeclaration)
255+ ds <- C.mark $ P.many1 (C.same *> parseLocalDeclaration)
249256 C.indented
250257 C.reserved "in"
251258 result <- parseValue