¿Cómo puedo entender "(.). (.) ”?

Creo que entiendofmap . fmap para los Functors, pero en las funciones me duele la cabeza desde hace meses.

He visto que solo puedes aplicar la definición de(.) a(.) . (.), pero me he olvidado de cómo hacer eso.
Cuando lo intento yo siempre sale mal:

(.) f g = \x -> f (g x)
(.) (.) (.) = \x -> (.) ((.) x)
\x f -> (.) ((.) x) f
\x f y  -> (((.)(f y)) x)
\x f y g-> (((.)(f y) g) x)
\x f y g-> ((f (g y)) x)
\x f y g-> ((f (g y)) x):: t2 -> (t1 -> t2 -> t) -> t3 -> (t3 -> t1) -> t

Si "solo aplicar la definición" es la única forma de hacerlo, ¿cómo se le ocurrió a alguien?(.) . (.)?
Debe haber algún entendimiento más profundo o intuición que me falta.

Respuestas a la pregunta(5)

Su respuesta a la pregunta