(++ "!")
- это специальный синтаксис, называемый операторной секцией .Он частично применяет второй параметр инфиксного оператора, тогда как (++) "!"
работает как обычное частичное применение и применяет первый параметр.
Вы также можете сделать то же самое с обычными функциямиИспользуемый инфиксный стиль с обратными чертами: (`map` [1..3])
эквивалентен (\f -> map f [1..3])
.
Это кажется странным, потому что это особая особенность, которая присутствует там только потому, что она чертовски полезна.