Ответ 1
Нет, <$>
остается ассоциативным, и в вашем примере это не так. (+1) <$> (/5) <$> [5,10]
читается как ((+1) <$> (/5)) <$> [5,10]
. Это происходит из-за экземпляра Functor
(->) a
в основном эквивалентно составу функции; fmap (+1) (/5)
эквивалентен \x -> (x/5)+1
, который в этом случае дает вам тот же результат, что и вы, с тем, как вы думаете, что это работает, т.е. (+1) <$> ((+5) <$> [5,10])
.
Так как это немного запутанно, если вы хотите применить несколько функций в строке, то, вероятно, лучше для чтения использовать обычный оператор композиции функций: (+1) . (/5) <$> [5,10]
.