@@ -2,7 +2,7 @@
22module Generate.JavaScript.Expression
33 ( generate
44 , generateCtor
5− , generateFunction
5+ , generateTailDef
66 , generateMain
77 , Code
88 , codeToExpr
@@ -714,15 +714,16 @@ generateDef mode def =
714714 JS.Var [ (Name.fromLocal name, Just (generateJsExpr mode body)) ]
715715
716716 Opt.TailDef name argNames body ->
717− let
718− function =
719− JS.Function Nothing (map Name.fromLocal argNames)
720− [ JS.Labelled (Name.fromLocal name) $
721− JS.While (JS.Bool True) $
722− codeToStmt $ generate mode body
723− ]
724− in
725− JS.Var [ (Name.fromLocal name, Just function) ]
717+ JS.Var [ (Name.fromLocal name, Just (generateTailDef mode name argNames body)) ]
718+
719+
720+generateTailDef :: Mode -> N.Name -> [N.Name] -> Opt.Expr -> JS.Expr
721+generateTailDef mode name argNames body =
722+ JS.Function Nothing (map Name.fromLocal argNames)
723+ [ JS.Labelled (Name.fromLocal name) $
724+ JS.While (JS.Bool True) $
725+ codeToStmt $ generate mode body
726+ ]
726727
727728
728729