logo
down
shadow

Implement `Applicative Parser`'s Apply Function


Implement `Applicative Parser`'s Apply Function

By : fgrubercpa
Date : November 18 2020, 01:01 AM
it helps some times Your code is predicated on a misunderstanding of what a Parser is. Don't worry, virtually everybody makes this mistake.
code :
newtype Parser a = Parser { runParser :: String -> Maybe (a, String) }
String -> Maybe (a, String)
[1]       [2]   [3] [4]
 pure a = Parser (\s -> Just (a, s))


Share : facebook icon twitter icon
How do I implement an Applicative instance for a parser without assuming Monad?

How do I implement an Applicative instance for a parser without assuming Monad?


By : ASSAI
Date : March 29 2020, 07:55 AM
I hope this helps you . Full marks for aiming to use Applicative as much as possible - it's much cleaner.
Headline: Your parser can stay Applicative, but your collection of possible parses need to be stored in a Monad. Internal structure: uses a monad. External structure: is applicative.
code :
string "Hello World!" <|> string "Hello Mum!"
== (++) <$> string "Hello " <*> (string "World" <|> string "Mum!")
Is it possible to implement `(Applicative m) => Applicative (StateT s m)`?

Is it possible to implement `(Applicative m) => Applicative (StateT s m)`?


By : Filipa
Date : March 29 2020, 07:55 AM
I hope this helps you . I'm currently working on Data.Fresh and Control.Monad.Trans.Fresh, which resp. define an interface for generating fresh variables, and a monad transformer which implements this interface. , Consider that you have two functions:
code :
 f :: s -> m (s, a -> b)
 g :: s -> m (s, a)
 h :: s -> m (s, b)
 f' :: m (s, a -> b)
 g :: s -> m (s, a)
Better Applicative instance for Parser (Haskell)

Better Applicative instance for Parser (Haskell)


By : Dulce Rios
Date : March 29 2020, 07:55 AM
fixed the issue. Will look into that further I assume you haven't got to Monads in the course yet. The way you are using collapse and fmap indicate to me that you are essentially reinventing Monads to solve this problem, and in particular the Monad Maybe instance. In fact your collapse is the same as join for this monad. And indeed using that is a very elegant way to solve this problem, but perhaps somewhat "cheating" at this point. The following is the best shape I could get it into while using your functions:
code :
appliedFunc p1 p2 str = collapse $ fmap step1 (runParser p1 str)
  where
    step1 (f, str2) = collapse $ fmap step2 (runParser p2 str2)
      where
        step2 (x, str3) = Just (f x, str3)
appliedFunc p1 p2 str = case runParser p1 str of
    Nothing        -> Nothing
    Just (f, str2) -> case runParser p2 str2 of
        Nothing        -> Nothing
        Just (x, str3) -> Just (f x, str3)
Reader Applicative's Apply Function

Reader Applicative's Apply Function


By : Ivory Laroco
Date : March 29 2020, 07:55 AM
Any of those help If we substitute ((->) e) for f (remembering that this is a function with e as its argument type), we get:
How can I turn this parser into an applicative, polyvariadic one?

How can I turn this parser into an applicative, polyvariadic one?


By : asyndeton256
Date : March 29 2020, 07:55 AM
will help you I'm trying to parse dates such as 09/10/2015 17:20:52: , Actually, you only need Functor:
shadow
Privacy Policy - Terms - Contact Us © ourworld-yourmove.org