我刚注意到(<$>)
的固定性为infixl 4
。怎么会这样?
(+1) <$> (/5) <$> [5,10]
显然从左到右。
答案 0 :(得分:18)
不,<$>
是关联的,这在您的示例中没有任何不同。 (+1) <$> (/5) <$> [5,10]
被视为((+1) <$> (/5)) <$> [5,10]
。这恰好起作用,因为Functor
(->) a
实例基本上等同于函数组合; fmap (+1) (/5)
相当于\x -> (x/5)+1
,在这种情况下,您会得到与您认为可以使用的订单相同的结果,即(+1) <$> ((+5) <$> [5,10])
。< / p>
因为这有点令人困惑,如果你想连续应用多个函数,那么在这里使用普通函数组合运算符的可读性可能更好:(+1) . (/5) <$> [5,10]
。