
Hey does this even compile for you ? I get this in the Functor instance for Parser • Couldn't match expected type ‘String -> [(a, String)]’ with actual type ‘Parser a’ • The function ‘p’ is applied to one argument, but its type ‘Parser a’ has none In the expression: p inp In the expression: case p inp of { [] -> [] [(v, out)] -> [(g v, out)] } • Relevant bindings include p :: Parser a (bound at src/Mailinglistproblem.hs:19:10) g :: a -> b (bound at src/Mailinglistproblem.hs:19:8) fmap :: (a -> b) -> Parser a -> Parser b { name: Bogicevic Sasa phone: +381606006200 }
On Aug 4, 2017, at 22:02, Jeffrey Brown
wrote: If you post there, you could put the link on this thread; I'd be interested.
On Fri, Aug 4, 2017 at 3:04 PM, Yassine
wrote: Ok, thanks for your answer 2017-08-04 20:04 GMT+02:00 David McBride
: This is a bit complicated for this list. You might have a bit more luck posting this to stackoverflow.com.
On Thu, Aug 3, 2017 at 3:19 PM, Yassine
wrote: 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. _______________________________________________ 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
-- Jeff Brown | Jeffrey Benjamin Brown Website | Facebook | LinkedIn(spammy, so I often miss messages here) | Github _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners