haskell - Difference in <$> and fmap -


i have line of code:

(++) <$> "hallo" <*> "du" 

which outputs just "hallodu"

in "learn haskell great good" learned <$> , fmap same , indeed ghci outputs same type signature me. nevertheless, when write:

fmap (++) "hallo" <*> "du" 

where difference?

yes <$> , fmap same thing using them in different expressions.

(++) <$> "hallo" <*> "du" 

is equivalent to:

(++) `fmap` "hallo" <*> "du" 

moving fmap in infix position yields:

fmap (++) (just "hallo") <*> "du" 

this due operator precedence , why <$> more readable of time.

note in expression:

fmap (++) "hallo" <*> "du" 

you passing 3 arguments fmap ((++), just , "hallo"), type doesn't match <*> wants.

you want pass 2 arguments: (++) , just "hallo".


Comments

Popular posts from this blog

javascript - Chart.js (Radar Chart) different scaleLineColor for each scaleLine -

apache - Error with PHP mail(): Multiple or malformed newlines found in additional_header -

java - Android – MapFragment overlay button shadow, just like MyLocation button -