@@ -54,13 +54,15 @@ jsModule modul =
5454 run $ do
5555 body <- toJS . fst . SD.flattenLets [] $ program modul
5656 foreignImport <- mapM importEvent (foreignImports modul)
57− return $ concat [ setup ("Elm": names modul)
57+ return $ concat [ setup ("Elm" : names modul)
5858 , globalAssign ("Elm." ++ modName)
5959 (jsFunc "elm" $ makeProgram body foreignImport) ]
6060 where
6161 modName = dotSep (names modul)
6262 makeProgram body foreignImport =
63− concat [ "\nvar " ++ usefulFuncs ++ ";"
63+ concat [ setup ("elm" : names modul)
64+ , "\nif (elm." ++ modName ++ ") return elm." ++ modName ++ ";"
65+ , "\nvar " ++ usefulFuncs ++ ";"
6466 , concatMap jsImport (imports modul)
6567 , concat foreignImport
6668 , assign "_op" "{}"
@@ -72,8 +74,7 @@ jsModule modul =
7274 map dotSep . drop 2 . List.inits $ init names
7375 usefulFuncs = commaSep (map (uncurry assign') (internalImports modName))
7476
75− jsExports = setup ("elm" : names modul) ++
76− ret (assign' ("elm." ++ modName) (brackets exs))
77+ jsExports = ret (assign' ("elm." ++ modName) (brackets exs))
7778 where
7879 exs = indent . commaSep . concatMap pair $ "_op" : exports modul
7980 pair x | isOp x = []