тип fmap в Functor -:
fmap :: Functor f => (a -> b) -> f a -> f b
похоже, сначала примените функцию (a -> b )к параметру fa, чтобы создать результат типа b, затем примените к нему f и результат это fb
с использованием Maybe a например:
fmap show (Just 1)
result is : Just "1"
то же самое, что сказать :
Just (show 1)
, но когда (-> )используется как функтор (в Control.Monad.Instances )
import Control.Monad.Instances
(fmap show Just) 1
result is : "Just 1"
, то есть Just is сначала применяется, затем применяется шоу. в другом примере результат тот же :
fmap (*3) (+100) 1
result is 303
, почему бы не *сначала 3, а затем +100?