BNF見ればちゃんと分かる
https://www.haskell.org/onlinereport/haskell2010/haskellch3.html
単純化するなら
exp = exp1 | exp1 op exp
exp1 = exp2 | exp1 exp2
exp2 = var | (exp)
二項演算子の優先順位を実現するには別の処理が必要だけど
少なくとも関数適用と二項演算子の計算が並ぶことはない