x is a number, since it occurs in expression x+1.
y is a list, since it occurs as the second argument of ::, which is always a list.
f x y is a list, since it is equal to (x+1)::y, and operator :: yields a list.
f x is a function. It is the function (y |-> (x+1)::y).