@@ -402,11 +402,24 @@ translateExpression _ (SError msg) =
402402translateExpression _ (SForeign _ _ "putStr" [(FString, var)]) =
403403 "__IDR__.print(" ++ translateVariableName var ++ ");"
404404
405−translateExpression _ (SForeign _ _ fun args) =
406− fun
407− ++ "("
408− ++ intercalate "," (map (translateVariableName . snd) args)
409− ++ ");"
405+translateExpression _ (SForeign _ _ fun args)
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
416+ ++ "("
417+ ++ intercalate "," (map (translateVariableName . snd) as)
418+ ++ ");"
419+ | otherwise = fun
420+ ++ "("
421+ ++ intercalate "," (map (translateVariableName . snd) args)
422+ ++ ");"
410423
411424translateExpression modname (SChkCase var cases) =
412425 "(function(e){\n"