mike_k_houghton at yahoo.co.uk
Fri Apr 14 19:19:40 UTC 2017
Yes, I think you are right with "Are you sure you are not wanting [String] instead of String?”
I could use Parsec but I’m building up a parser library from first principles i.e.
newtype Parser a = P (String -> [(a,String)])
parse :: Parser a -> String -> [(a,String)]
parse (P p) = p
and so on….
It’s just an exercise to see how far I can get. And its good fun. So maybe I need add another combinator or to what I already have.
> On 14 Apr 2017, at 19:35, Francesco Ariis <fa-ml at ariis.it> wrote:
> On Fri, Apr 14, 2017 at 07:02:37PM +0100, mike h wrote:
>> I have
>> data PackageDec = Pkg String deriving Show
>> and a parser for it
>> packageP :: Parser PackageDec
>> packageP = do
>> literal “package"
>> x <- identifier
>> xs <- many ((:) <$> char '.' <*> identifier)
>> return $ Pkg . concat $ (x:xs)
>> so I’m parsing for this sort of string
>> “package some.sort.of.name”
>> and I’m trying to rewrite the packageP parser in applicative style. As a not quite correct start I have
> Hello Mike,
> I am not really sure what you are doing here? You are parsing a dot
> separated list (like.this.one) but at the end you are concatenating all
> together, why?
> Are you sure you are not wanting [String] instead of String?
> If so, Parsec comes with some handy parser combinators , maybe one of
> them could fit your bill:
> -- should work
> packageP = literal "package" *> Pkg <$> sepEndBy1 identifier (char '.')
>  https://hackage.haskell.org/package/parsec-3.1.11/docs/Text-Parsec-Combinator.html <https://hackage.haskell.org/package/parsec-3.1.11/docs/Text-Parsec-Combinator.html>
> Beginners mailing list
> Beginners at haskell.org <mailto:Beginners at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners