<div dir="ltr">If you post there, you could put the link on this thread; I'd be interested.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 4, 2017 at 3:04 PM, Yassine <span dir="ltr"><<a href="mailto:yassine912@gmail.com" target="_blank">yassine912@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ok, thanks for your answer<br>
<div class="HOEnZb"><div class="h5"><br>
2017-08-04 20:04 GMT+02:00 David McBride <<a href="mailto:toad3k@gmail.com">toad3k@gmail.com</a>>:<br>
> This is a bit complicated for this list.  You might have a bit more<br>
> luck posting this to <a href="http://stackoverflow.com" rel="noreferrer" target="_blank">stackoverflow.com</a>.<br>
><br>
> On Thu, Aug 3, 2017 at 3:19 PM, Yassine <<a href="mailto:yassine912@gmail.com">yassine912@gmail.com</a>> wrote:<br>
>> Hi,<br>
>><br>
>> I have a question about functor applicate.<br>
>><br>
>> I know that:<br>
>> pure (+1) <*> Just 2<br>
>><br>
>><br>
>> produce: Just 3<br>
>> because pure (+1) produce Just (+1) and then Just (+1) <*> Just 2<br>
>> produce Just (2+1)<br>
>><br>
>><br>
>> but in more complex case like:<br>
>> newtype Parser a = P (String -> [(a,String)])<br>
>><br>
>> parse :: Parser a -> String -> [(a,String)]<br>
>> parse (P p) inp = p inp<br>
>><br>
>><br>
>> item :: Parser Char<br>
>> item = P (\inp -> case inp of<br>
>>  []     -> []<br>
>> (x:xs) -> [(x,xs)])<br>
>><br>
>> instance Functor Parser where<br>
>> fmap g p = P (\inp -> case p inp of<br>
>> []              -> []<br>
>>  [(v, out)]      -> [(g v, out)])<br>
>><br>
>> instance Applicative Parser where<br>
>> pure v = P (\inp -> [(v, inp)])<br>
>> pg <*> px = P (\inp -> case parse pg inp of<br>
>> []              -> []<br>
>> [(g, out)]      -> parse (fmap g px) out)<br>
>><br>
>><br>
>> When I do:<br>
>> parse (pure (\x y -> (x,y)) <*> item <*> item) "abc"<br>
>><br>
>> The answer is:<br>
>> [(('a','b'),"c")]<br>
>><br>
>> But I don't understand what exactly happens.<br>
>> First:<br>
>> pure (\x y -> (x,y)) => P (\inp -> [(\x y -> (x,y), inp)])<br>
>><br>
>> Then:<br>
>> P (\inp -> [(\x y -> (x,y), inp)]) <*> item => ???<br>
>><br>
>> Can someone explain what's happens step by step please.<br>
>><br>
>> Thank you.<br>
>> ______________________________<wbr>_________________<br>
>> Beginners mailing list<br>
>> <a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/beginners</a><br>
> ______________________________<wbr>_________________<br>
> Beginners mailing list<br>
> <a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/beginners</a><br>
______________________________<wbr>_________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/beginners</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Jeff Brown | Jeffrey Benjamin Brown</div><div dir="ltr"><a href="https://msu.edu/~brown202/" style="font-size:12.8px" target="_blank">Website</a>   |   <a href="https://www.facebook.com/mejeff.younotjeff" style="font-size:12.8px" target="_blank">Facebook</a>   |   <a href="https://www.linkedin.com/in/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank">LinkedIn</a><span style="font-size:12.8px">(spammy, so I often miss messages here)   </span><span style="font-size:12.8px">|</span><span style="font-size:12.8px">   </span><a href="https://github.com/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank">Github</a><span style="font-size:12.8px">   </span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>