[Haskell-beginners] Functions as Applicatives

Olumide 50295 at web.de
Mon Aug 22 16:07:30 UTC 2016


Hi List,

I'm struggling to relate the definition of a function as a function

instance Applicative ((->) r) where
     pure x = (\_ -> x)
     f <*> g = \x -> f x (g x)

with the following expression

ghci> :t (+) <$> (+3) <*> (*100)
(+) <$> (+3) <*> (*100) :: (Num a) => a -> a
ghci> (+) <$> (+3) <*> (*100) $ 5
508

 From chapter 11 of LYH http://goo.gl/7kl2TM .

I understand the explanation in the book: "we're making a function that 
will use + on the results of (+3) and (*100) and return that. To 
demonstrate on a real example, when we did (+) <$> (+3) <*> (*100) $ 5, 
the 5 first got applied to (+3) and (*100), resulting in 8 and 500. 
Then, + gets called with 8 and 500, resulting in 508."

The problem is that I can't relate that explanation with the definition 
of a function as an applicative; especially f <*> g = \x -> f x (g x) . 
Is (g x) the second argument to f?

Regards,

- Olumide


More information about the Beginners mailing list