According to the GHC docs:
...GHC will only inline the function if it is fully applied, where \"fully applied\" means applied to as many arguments a
What if, in this example, c is itself a function type? I'm not clear how your proposal would work out in that scenario.
In any event, there are definitely cases where you don't want all of a function's arguments "pulled to the front." For example, you might have some code like this:
foo :: [Int] -> Int -> Int -> Int
foo list = let
-- expensive precomputation here
bar x y = ...
in \ x y -> bar x y
You want foo to get partially applied, and then for multiple applications of the resulting function to share the expensive precomputation work. If instead you pulled it forward as foo list x y, you wouldn't get to share that expensive precomputation. (I've encountered this case in serious applications.)