mylić o funkcji jako instancji Functor w haskell

typ fmapy w Functorze to:

<code>fmap :: Functor f => (a -> b) -> f a -> f b
</code>

wygląda na to, że najpierw należy zastosować funkcję (a -> b) do parametru f a, aby utworzyć wynik typu b, a następnie zastosować do niego f, a wynikiem jest f b

używając Może na przykład:

<code> fmap show (Just 1)
 result is : Just "1"
</code>

tak samo jak mówiąc:

<code>Just (show 1)
</code>

ale gdy (->) jest używany jako Funktor (w Control.Monad.Instances)

<code>import Control.Monad.Instances
(fmap show Just) 1
result is : "Just 1"
</code>

to znaczy, najpierw stosuje się Just, a następnie stosuje się show. w innym przykładzie wynik jest taki sam:

<code> fmap (*3) (+100) 1
 result is 303
</code>

dlaczego nie * 3 najpierw, a potem +100?

questionAnswers(5)

yourAnswerToTheQuestion