@@ -322,19 +322,22 @@ translateDeclaration :: (String, SDecl) -> JS
322translateDeclaration (path, SFun name params stackSize body)
322translateDeclaration (path, SFun name params stackSize body)
323 | (MN _ "APPLY") <- name =
323 | (MN _ "APPLY") <- name =
324 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
324 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
325− , translate (path ++ translateName name) params stackSize body
325+ , jsDecl (path ++ translateName name) $ translate params stackSize body
327 | (MN _ "EVAL") <- name
327 | (MN _ "EVAL") <- name
328 , (SChkCase var cases) <- body =
328 , (SChkCase var cases) <- body =
329 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
329 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
330− , translate (path ++ translateName name) params stackSize body
330+ , jsDecl (path ++ translateName name) $ translate params stackSize body
332 | otherwise =
332 | otherwise =
333− translate (path ++ translateName name) params stackSize body
333+ jsDecl (path ++ translateName name) $ translate params stackSize body
335+ jsDecl :: String -> JS -> JS
336+ jsDecl name = JSAlloc name . Just
335− translate :: String -> [Name] -> Int -> SExp -> JS
338+ translate :: [Name] -> Int -> SExp -> JS
336− translate name params stackSize body =
339+ translate params stackSize body =
337− JSAlloc name $ Just $ JSFunction p (
340+ JSFunction p (
339 zipWith assignVar [0..] p ++
342 zipWith assignVar [0..] p ++
340 map allocVar [numP .. (numP + stackSize - 1)] ++
343 map allocVar [numP .. (numP + stackSize - 1)] ++