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

Haskell functions only consume one argument, not two. The composed function is applied to the first argument, which is 1. That returns a new function, which is applied to the next argument, which is [2].

e