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.  Applicative: how <*> really works (Yassine)
   2.  Password Program Questions (Casey Newsome)
   3. Re:  Password Program Questions (David McBride)


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

Message: 1
Date: Thu, 3 Aug 2017 21:19:49 +0200
From: Yassine <yassine...@gmail.com>
To: beginners@haskell.org
Subject: [Haskell-beginners] Applicative: how <*> really works
Message-ID:
        <CAFr2bdC3ts9z6wkWEfenpAXdE5_cTVuL4n=drk-zzlr3z28...@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

Hi,

I have a question about functor applicate.

I know that:
pure (+1) <*> Just 2


produce: Just 3
because pure (+1) produce Just (+1) and then Just (+1) <*> Just 2
produce Just (2+1)


but in more complex case like:
newtype Parser a = P (String -> [(a,String)])

parse :: Parser a -> String -> [(a,String)]
parse (P p) inp = p inp


item :: Parser Char
item = P (\inp -> case inp of
 []     -> []
(x:xs) -> [(x,xs)])

instance Functor Parser where
fmap g p = P (\inp -> case p inp of
[]              -> []
 [(v, out)]      -> [(g v, out)])

instance Applicative Parser where
pure v = P (\inp -> [(v, inp)])
pg <*> px = P (\inp -> case parse pg inp of
[]              -> []
[(g, out)]      -> parse (fmap g px) out)


When I do:
parse (pure (\x y -> (x,y)) <*> item <*> item) "abc"

The answer is:
[(('a','b'),"c")]

But I don't understand what exactly happens.
First:
pure (\x y -> (x,y)) => P (\inp -> [(\x y -> (x,y), inp)])

Then:
P (\inp -> [(\x y -> (x,y), inp)]) <*> item => ???

Can someone explain what's happens step by step please.

Thank you.


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

Message: 2
Date: Thu, 3 Aug 2017 22:59:27 +0000 (UTC)
From: Casey Newsome <casey_newsom...@ymail.com>
To: "Beginners@haskell.org" <Beginners@haskell.org>
Subject: [Haskell-beginners] Password Program Questions
Message-ID: <1187571632.5422106.1501801167...@mail.yahoo.com>
Content-Type: text/plain; charset="utf-8"

I am very new to Haskell and I am attempting to make a simple password program 
as my first program. I have ran into a problem and I am not very sure on how to 
fix it. I do not know how to make a second section for the passwords. My 
guessing attempts have failed so I am asking for help.





Here is my code
main = do       putStrLn "Hello, Who are you?"      name <- getLine --User 
Input      putStrLn ("Hey " ++ name ++ ", What's the password?")      pass <- 
getLine      if pass == "12345"          then putStrLn ("Welcome")          pw  
        else do              putStrLn "That is wrong!"              mainpw = do 
   putStrLn "What Password do you need?"





Thanks in advance, Casey :D
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20170803/f475ee36/attachment-0001.html>

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

Message: 3
Date: Thu, 3 Aug 2017 19:39:04 -0400
From: David McBride <toa...@gmail.com>
To: Casey Newsome <casey_newsom...@ymail.com>,  The Haskell-Beginners
        Mailing List - Discussion of primarily beginner-level topics related
        to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] Password Program Questions
Message-ID:
        <can+tr40zyqzqd4kzwv8fkgq0gfvavzuob8wirt8v7ah980m...@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

Remember that haskell is whitespace delimited.  You probably intended
putStrLn "Welcome" to line up with pw, in its own do.

if pass == "12345"
  then do
    putStrLn "welcome"
    pw
  else do
    putStrLn "wrong"
    main


On Thu, Aug 3, 2017 at 6:59 PM, Casey Newsome <casey_newsom...@ymail.com> wrote:
> I am very new to Haskell and I am attempting to make a simple password
> program as my first program. I have ran into a problem and I am not very
> sure on how to fix it. I do not know how to make a second section for the
> passwords. My guessing attempts have failed so I am asking for help.
>
>
>
>
>
>
> Here is my code
>
> main = do
>       putStrLn "Hello, Who are you?"
>       name <- getLine --User Input
>       putStrLn ("Hey " ++ name ++ ", What's the password?")
>       pass <- getLine
>       if pass == "12345"
>           then putStrLn ("Welcome")
>           pw
>           else do
>               putStrLn "That is wrong!"
>               main
> pw = do
>     putStrLn "What Password do you need?"
>
>
>
>
>
>
> Thanks in advance, Casey :D
>
>
> _______________________________________________
> 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 110, Issue 7
*****************************************

Reply via email to