@@ -322,20 +322,23 @@ translateConstant c =
322322
323323translateDeclaration :: (String, SDecl) -> JS
324324translateDeclaration (path, SFun name params stackSize body)
325− | (MN _ "APPLY") <- name =
325+ | (MN _ "APPLY") <- name
326+ , (SLet var val next) <- body
327+ , (SChkCase cvar cases) <- next =
326328 let fun = translateExpression body in
327329 jsDecl $ jsFun fun
328330 | (MN _ "EVAL") <- name
329331 , (SChkCase var cases) <- body =
330332 let fun = translateExpression body in
331333 JSSeq [ lookupTable var cases
332− , jsDecl $ JSRaw $ concat [ "function(arg0){"
333− , "if (arg0 instanceof __IDRRT__Con "
334− , " && " ++ lookupTableName ++ ".hasOwnProperty(arg0.tag))"
335− , "return " ++ lookupTableName ++ "[arg0.tag](arg0);"
336− , "else "
337− , "return arg0; }"
338− ]
334+ , jsDecl $ JSFunction ["arg0"] (JSRaw $
335+ concat [ "if (arg0 instanceof __IDRRT__Con "
336+ , " && " ++ lookupTableName ++ ".hasOwnProperty(arg0.tag))"
337+ , "return " ++ lookupTableName ++ "[arg0.tag](arg0);"
338+ , "else "
339+ , "return arg0;"
340+ ]
341+ )
339342 ]
340343 | otherwise =
341344 let fun = translateExpression body in