запутался в функции как экземпляре Functor в Haskell

тип 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?

23
задан 诺 铁 24 April 2012 в 08:24
поделиться