Well even if (.) can be used with functions returning functions (partially applied),
calling g . g where g expects 2 args and returns 1 does not seem intuitive.
Could you think of a useful practical example of
(a->a->a) . (a->a->a)
?