$ является инфиксным оператором с наименьшим возможным старшинства:
е $ а = фа
ли это не означает, что, в приведенном ниже выражении, часть
$ 2^2
должны быть оценены пихты t, а затем добавить $ 2? Оказывается 2 + 2 вычисляется первый
Prelude> (2 ^) $ 2 + 2
возвращается:
Так haskell оценивает право налево, как при добавлении скобок все термины имеют одинаковый приоритет? –
На самом деле это немного сложнее: он всегда будет пытаться сначала оценить «внешнюю» функцию/оператор, а затем все, что ему нужно оценить, чтобы это сделать. Поэтому он попытается оценить '' 'first ', потому что это вне всех круглых скобок, но для этого ему нужно оценить' (2 ^) ', примененную к' (2 + 2) '; чтобы оценить, что он должен выработать «2 + 2», так что на практике это первая цифровая операция, которая выполняется, но на самом деле это не потому, что она идет справа налево. – psmears