Start with the spelling. :)
f :: a -> Int -> Int -> Int
f x = (+)
There really isn't anything meaningful to do with a function before it has consumed all it's arguments other than returning another function. f x y = foobar
is just short hand for f = \x -> \y -> foobar f :: x -> y -> z
f x y = undefined
then use it like (f 0)
you have a new function: f 0 :: y -> z
then if you apply again, (f 0) 1
and this final expression, equivalent to f 0 1, gives you something of type 'z'