@@ -2,7 +2,7 @@
2module Generate.JavaScript.Expression
2module Generate.JavaScript.Expression
4 , generateCtor
4 , generateCtor
5− , generateFunction
5+ , generateTailDef
6 , generateMain
6 , generateMain
8 , codeToExpr
8 , codeToExpr
@@ -714,15 +714,16 @@ generateDef mode def =
714 JS.Var [ (Name.fromLocal name, Just (generateJsExpr mode body)) ]
714 JS.Var [ (Name.fromLocal name, Just (generateJsExpr mode body)) ]
716 Opt.TailDef name argNames body ->
716 Opt.TailDef name argNames body ->
717− let
717+ JS.Var [ (Name.fromLocal name, Just (generateTailDef mode name argNames body)) ]
720+generateTailDef :: Mode -> N.Name -> [N.Name] -> Opt.Expr -> JS.Expr
721+generateTailDef mode name argNames body =
719− JS.Function Nothing (map Name.fromLocal argNames)
722+ JS.Function Nothing (map Name.fromLocal argNames)
720− [ JS.Labelled (Name.fromLocal name) $
723+ [ JS.Labelled (Name.fromLocal name) $
721− JS.While (JS.Bool True) $
724+ JS.While (JS.Bool True) $
722− codeToStmt $ generate mode body
725+ codeToStmt $ generate mode body
725− JS.Var [ (Name.fromLocal name, Just function) ]