@@ -402,11 +402,24 @@ translateExpression _ (SError msg) =
402translateExpression _ (SForeign _ _ "putStr" [(FString, var)]) =
402translateExpression _ (SForeign _ _ "putStr" [(FString, var)]) =
403 "__IDR__.print(" ++ translateVariableName var ++ ");"
403 "__IDR__.print(" ++ translateVariableName var ++ ");"
405−translateExpression _ (SForeign _ _ fun args) =
405+translateExpression _ (SForeign _ _ fun args)
406− fun
406+ | "." `isPrefixOf` fun
407+ , "=" `isSuffixOf` fun
408+ , (a:b:[]) <- args =
409+ translateVariableName (snd a) ++ fun ++ translateVariableName (snd b)
410+ | "." `isPrefixOf` fun
411+ , (a:[]) <- args = translateVariableName (snd a) ++ fun
412+ | "." `isPrefixOf` fun
413+ , (a:[(FUnit, _)]) <- args = translateVariableName (snd a) ++ fun ++ "()"
414+ | "." `isPrefixOf` fun
415+ , (a:as) <- args = translateVariableName (snd a) ++ fun
417+ ++ intercalate "," (map (translateVariableName . snd) as)
408− ++ intercalate "," (map (translateVariableName . snd) args)
421+ ++ intercalate "," (map (translateVariableName . snd) args)
411translateExpression modname (SChkCase var cases) =
424translateExpression modname (SChkCase var cases) =
412 "(function(e){\n"
425 "(function(e){\n"