Hi, all

I'm having trouble in understanding function evaluation in Haskell.
I came across the following line, which is somewhat cryptic to me.
(liftM . (+)) 1 [2]  
Could you explain how the expression evaluates?

I thought that to evalutate two composed functions,
I should apply right function to get a result and then
apply left function with the result.
e.g. f.g x y = f (g x y) = f z = result

So I guessed that Haskell evaluated above expression
as follows:
(liftM . (+)) 1 [2]   --->
  ((liftM . (+)) 1) [2]  --->       (A)
  (liftM (+1)) [2] -->
  [3]

Why did Haskell, however, not try to fully evaluate addition, 
like following?
(liftM . (+)) 1 [2]   --->
  liftM ((+) 1 [2])   --->
  error

Does (f . g) x y z equal ((((f . g) x) y) z)  in haskell?

Any guide will be appreciated.

Chul-Woong