Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1. Re:  Functions as Applicatives (Lee Duhem)


----------------------------------------------------------------------

Message: 1
Date: Wed, 24 Aug 2016 10:38:52 +0800
From: Lee Duhem <lee.du...@gmail.com>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] Functions as Applicatives
Message-ID:
        <caoser0cyd0uz2kjurvbt_opkyjarccuqh3djcjjy-e0ndkx...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

On Tue, Aug 23, 2016 at 10:30 PM, Olumide <50...@web.de> wrote:
> On 23/08/2016 12:39, Tony Morris wrote:
>>
>> All functions in Haskell always take one argument.
>
>
> I know that. All functions accept one argument and return a value _or_
> another function. Is f the latter type?

In the ((->) r) case, yes.

lee

>
> - Olumide
>
>
>>
>>
>> On 23/08/16 21:28, Olumide wrote:
>>>
>>> I must be missing something. I thought f accepts just one argument.
>>>
>>> - Olumide
>>>
>>> On 23/08/2016 00:54, Theodore Lief Gannon wrote:
>>>>
>>>> Yes, (g x) is the second argument to f. Consider the type signature:
>>>>
>>>> (<*>) :: Applicative f => f (a -> b) -> f a -> f b
>>>>
>>>> In this case, the type of f is ((->) r). Specialized to that type:
>>>>
>>>> (<*>) :: (r -> a -> b) -> (r -> a) -> (r -> b)
>>>> f <*> g = \x -> f x (g x)
>>>>
>>>> Breaking down the pieces...
>>>> f :: r -> a -> b
>>>> g :: r -> a
>>>> x :: r
>>>> (g x) :: a
>>>> (f x (g x)) :: b
>>>>
>>>> The example is made a bit confusing by tossing in an fmap. As far as the
>>>> definition above is concerned, 'f' in the example is ((+) <$> (+3)) and
>>>> that has to be resolved before looking at <*>.
>>>>
>>>>
>>>> On Mon, Aug 22, 2016 at 9:07 AM, Olumide <50...@web.de
>>>> <mailto:50...@web.de>> wrote:
>>>>
>>>>     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
>>>>     _______________________________________________
>>>>     Beginners mailing list
>>>>     Beginners@haskell.org <mailto:Beginners@haskell.org>
>>>>     http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>>     <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Beginners mailing list
>>>> Beginners@haskell.org
>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>>
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners@haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>>
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 98, Issue 18
*****************************************

Reply via email to