@@ -1419,43 +1419,39 @@ translateConstant c =
14191419
14201420translateDeclaration :: (String, SDecl) -> [JS]
14211421translateDeclaration (path, SFun name params stackSize body)
1422− {-| (MN _ ap) <- name-}
1423− {-, (SLet var val next) <- body-}
1424− {-, (SChkCase cvar cases) <- next-}
1425− {-, ap == txt "APPLY" =-}
1426− {-let lvar = translateVariableName var-}
1427− {-lookup t = (JSApp-}
1428− {-(JSIndex (JSIdent t) (JSProj (JSIdent lvar) "tag"))-}
1429− {-[JSIdent "fn0", JSIdent "arg0", JSIdent lvar]) in-}
1430− {-[ lookupTable "APPLY" [(var, "chk")] var cases-}
1431− {-, jsDecl $ JSFunction ["fn0", "arg0"] (-}
1432− {-JSSeq [ JSAlloc "__var_0" (Just $ JSIdent "fn0")-}
1433− {-, JSAlloc (translateVariableName var) (-}
1434− {-Just $ translateExpression val-}
1435− {-)-}
1436− {-, JSReturn $ (JSTernary (-}
1437− {-(JSVar var `jsInstanceOf` jsCon) `jsAnd`-}
1438− {-(hasProp (idrLTNamespace ++ "APPLY") (translateVariableName var))-}
1439− {-) (lookup (idrLTNamespace ++ "APPLY")) JSNull)-}
1440− {-]-}
1441− {-)-}
1442− {-]-}
1422+ | (MN _ ap) <- name
1423+ , (SChkCase var cases) <- body
1424+ , ap == txt "APPLY" =
1425+ [ lookupTable "APPLY" [] var cases
1426+ , jsDecl $ JSFunction ["mfn0", "marg0"] (JSReturn $
1427+ JSTernary (
1428+ (JSIdent "mfn0" `jsInstanceOf` jsCon) `jsAnd`
1429+ (hasProp (idrLTNamespace ++ "APPLY") "mfn0")
1430+ ) (JSApp
1431+ (JSIndex
1432+ (JSIdent (idrLTNamespace ++ "APPLY"))
1433+ (JSProj (JSIdent "mfn0") "tag")
1434+ )
1435+ [JSIdent "mfn0", JSIdent "marg0"]
1436+ ) JSNull
1437+ )
1438+ ]
14431439
14441440 | (MN _ ev) <- name
14451441 , (SChkCase var cases) <- body
14461442 , ev == txt "EVAL" =
14471443 [ lookupTable "EVAL" [] var cases
1448− , jsDecl $ JSFunction ["arg0"] (JSReturn $
1444+ , jsDecl $ JSFunction ["marg0"] (JSReturn $
14491445 JSTernary (
1450− (JSIdent "arg0" `jsInstanceOf` jsCon) `jsAnd`
1451− (hasProp (idrLTNamespace ++ "EVAL") "arg0")
1446+ (JSIdent "marg0" `jsInstanceOf` jsCon) `jsAnd`
1447+ (hasProp (idrLTNamespace ++ "EVAL") "marg0")
14521448 ) (JSApp
14531449 (JSIndex
14541450 (JSIdent (idrLTNamespace ++ "EVAL"))
1455− (JSProj (JSIdent "arg0") "tag")
1451+ (JSProj (JSIdent "marg0") "tag")
14561452 )
1457− [JSIdent "arg0"]
1458− ) (JSIdent "arg0")
1453+ [JSIdent "marg0"]
1454+ ) (JSIdent "marg0")
14591455 )
14601456 ]
14611457 | otherwise =