@@ -1,4 +1,4 @@
1−module Parse.Expression (def, term, typeAnnotation, expr) where
1+module Parse.Expression (term, typeAnnotation, definition, expr) where
3import Control.Applicative ((<$>), (<*>))
3import Control.Applicative ((<$>), (<*>))
4import qualified Data.List as List
4import qualified Data.List as List
@@ -232,25 +232,16 @@ letExpr :: IParser Source.Expr'
233 do try (reserved "let")
233 do try (reserved "let")
234 whitespace
234 whitespace
235− defs <- defSet
235+ defs <-
237+ do def <- typeAnnotation <|> definition
236 padded (reserved "in")
240 padded (reserved "in")
237 E.Let defs <$> expr
241 E.Let defs <$> expr
240−defSet :: IParser [Source.Def]
244+-- TYPE ANNOTATION
250−def :: IParser Source.Def
252− typeAnnotation <|> definition
255typeAnnotation :: IParser Source.Def
246typeAnnotation :: IParser Source.Def
256typeAnnotation =
247typeAnnotation =
@@ -262,6 +253,8 @@ typeAnnotation =
265definition :: IParser Source.Def
258definition :: IParser Source.Def
266definition =
259definition =
267 withPos $
260 withPos $
@@ -299,4 +292,3 @@ defStart =
299 if o == '`'
292 if o == '`'
300 then [ P.Var $ takeWhile (/='`') p, p1, p2 ]
293 then [ P.Var $ takeWhile (/='`') p, p1, p2 ]
301 else [ P.Var (o:p), p1, p2 ]
294 else [ P.Var (o:p), p1, p2 ]