Por que Haskell não aceita argumentos após uma composição de função?

Como as funções Haskell têm apenas um argumento, onde o restante dos argumentos permanece como lambdas, podemos fazer o seguinte:

foo a b = a + b -- this is like foo a = \b -> a + b

foo 1 2 -- ok

Bem, notei que se eu declarar a função retornando um lambda, assim como no comentário, ofoo 1 2 vai funcionar bem da mesma maneira.

Mas quando eu componho essas funções, assim:

foo a b = a + b
bar x = x * x

bar . foo 1 2 -- oh, it's wrong, I need do '(bar . foo 1) 2'

... Isso retorna um erro.

Ok, a pergunta é: por que retornar um lambda da função não funciona como a composição da função? Quero dizer, na composição, preciso colocar parênteses ao redor do primeiro, e nenhum parênteses é necessário quando um lambda é retornado da função.

questionAnswers(2)

yourAnswerToTheQuestion