<div dir="auto">I've had good luck recently with Atom and Visual Studio code on Windows 10 and MacOS.<div dir="auto"><br></div><div dir="auto">I'm looking at the Haskell-ghc-mod, ide-Haskell and language-Haskell community packages right now on Atom,</div><div dir="auto">and on  VS Code I've got Haskell ghc-mod, Haskell syntax highlighting and Haskell linter.<br></div><div dir="auto"><br></div><div dir="auto">I hope this helps.</div><div dir="auto"><br></div><div dir="auto">Also, do please trim stuff from previous posts not relevant to your question.  I can't do it to this reply because I'm on a phone at the moment, and deleting that much stuff is more trouble than it's worth.</div><div dir="auto"><br></div><div dir="auto">Cheers</div><div dir="auto"><br></div><div dir="auto">Mike</div><div dir="auto"><div dir="auto"><br><div class="gmail_extra"><br><div class="gmail_quote">On 19 Apr 2017 10:17 am, "Frank Lugala" <<a href="mailto:official08@live.in" target="_blank">official08@live.in</a>> wrote:<br type="attribution"><blockquote class="m_-5034798227068251580quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_-5034798227068251580m_-4394068359948768308divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif" dir="ltr">
<p>Can   anyone  suggest a good Haskell  IDE  for  windows?<br>
</p>
<br>
<br>
<div style="color:rgb(0,0,0)">
<div>
<hr style="display:inline-block;width:98%">
<div id="m_-5034798227068251580m_-4394068359948768308x_divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri, sans-serif" style="font-size:11pt"><b>From:</b> Beginners <<a href="mailto:beginners-bounces@haskell.org" target="_blank">beginners-bounces@haskell.org</a><wbr>> on behalf of David McBride <<a href="mailto:toad3k@gmail.com" target="_blank">toad3k@gmail.com</a>><br>
<b>Sent:</b> Tuesday, April 18, 2017 4:22 PM<div class="m_-5034798227068251580quoted-text"><br>
<b>To:</b> The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell<br>
</div><b>Subject:</b> Re: [Haskell-beginners] Beginners Digest, Vol 106, Issue 7</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt">
<div class="m_-5034798227068251580m_-4394068359948768308PlainText"><div class="m_-5034798227068251580quoted-text">That depends on what package you are using to parse.  If you are using<br>
parsec, you can use the string function from Text.Parsec.Char.  If you<br>
are using some other package, it probably has a different name for it.<br>
<br>
On Tue, Apr 18, 2017 at 8:39 AM, Andrey Klaus <<a href="mailto:deepmindster@gmail.com" target="_blank">deepmindster@gmail.com</a>> wrote:<br>
> Hello everybody,<br>
><br>
> A small question.<br>
> -----<br>
> packageP = do<br>
>     literal “package"<br>
> -----<br>
><br>
> what is the "literal" in this code? My problem is<br>
><br>
> $ ghc ParserTest.hs<br>
> [1 of 1] Compiling ParserTest       ( ParserTest.hs, ParserTest.o )<br>
><br>
> ParserTest.hs:11:5: Not in scope: ‘literal’<br>
><br>
> $ ghc --version<br>
> The Glorious Glasgow Haskell Compilation System, version 7.10.3<br>
><br>
> Is this because I use old version of software?<br>
><br>
> Thanks,<br>
> Andrey<br>
><br>
><br>
><br>
> 2017-04-14 21:58 GMT+03:00 <<a href="mailto:beginners-request@haskell.org" target="_blank">beginners-request@haskell.org</a><wbr>>:<br>
>><br>
>> Send Beginners mailing list submissions to<br>
>>         <a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a><br>
>><br>
>> To subscribe or unsubscribe via the World Wide Web, visit<br>
>>         <a id="m_-5034798227068251580m_-4394068359948768308LPlnk372993" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">
http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a>
</div><div id="m_-5034798227068251580m_-4394068359948768308LPBorder_GT_14925606426890.2267751574316368" style="width:100%;text-indent:0px;overflow:auto;margin-bottom:20px">
<table id="m_-5034798227068251580m_-4394068359948768308LPContainer_14925606426820.17116402305260347" style="width:90%;overflow:auto;padding-top:20px;padding-bottom:20px;margin-top:20px;border-top-color:rgb(200,200,200);border-bottom-color:rgb(200,200,200);border-top-width:1px;border-bottom-width:1px;border-top-style:dotted;border-bottom-style:dotted;background-color:rgb(255,255,255)" cellspacing="0">
<tbody>
<tr valign="top" style="border-spacing:0px">
<td id="m_-5034798227068251580m_-4394068359948768308TextCell_14925606426830.7914124929705071" style="padding:0px;vertical-align:top;display:table-cell" colspan="2">
<div id="m_-5034798227068251580m_-4394068359948768308LPRemovePreviewContainer_14925606426830.3451852653843921"></div>
<div id="m_-5034798227068251580m_-4394068359948768308LPTitle_14925606426840.4681112878299083" style="color:rgb(0,120,215);line-height:21px;font-family:"wf_segoe-ui_light","Segoe UI Light","Segoe WP Light","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:21px;font-weight:400">
<a id="m_-5034798227068251580m_-4394068359948768308LPUrlAnchor_14925606426850.5002817517398079" style="text-decoration:none" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">Haskell-Beginners Info Page</a></div>
<div id="m_-5034798227068251580m_-4394068359948768308LPMetadata_14925606426850.9417476406950229" style="margin:10px 0px 16px;color:rgb(102,102,102);line-height:14px;font-family:"wf_segoe-ui_normal","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:14px;font-weight:400">
<a href="http://mail.haskell.org" target="_blank">mail.haskell.org</a></div>
<div id="m_-5034798227068251580m_-4394068359948768308LPDescription_14925606426870.9307040685960939" style="color:rgb(102,102,102);line-height:20px;overflow:hidden;font-family:"wf_segoe-ui_normal","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:14px;font-weight:400;display:block;max-height:100px">
Haskell-Beginners -- The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell About Haskell-Beginners</div>
</td>
</tr>
</tbody>
</table>
</div><div class="m_-5034798227068251580elided-text">
<br>
<br>
>> or, via email, send a message with subject or body 'help' to<br>
>>         <a href="mailto:beginners-request@haskell.org" target="_blank">beginners-request@haskell.org</a><br>
>><br>
>> You can reach the person managing the list at<br>
>>         <a href="mailto:beginners-owner@haskell.org" target="_blank">beginners-owner@haskell.org</a><br>
>><br>
>> When replying, please edit your Subject line so it is more specific<br>
>> than "Re: Contents of Beginners digest..."<br>
>><br>
>><br>
>> Today's Topics:<br>
>><br>
>>    1.  Parsing (mike h)<br>
>>    2. Re:  Parsing (David McBride)<br>
>>    3. Re:  Parsing (Francesco Ariis)<br>
>>    4. Re:  Parsing (mike h)<br>
>>    5. Re:  Parsing (mike h)<br>
>><br>
>><br>
>> ------------------------------<wbr>------------------------------<wbr>----------<br>
>><br>
>> Message: 1<br>
>> Date: Fri, 14 Apr 2017 19:02:37 +0100<br>
>> From: mike h <<a href="mailto:mike_k_houghton@yahoo.co.uk" target="_blank">mike_k_houghton@yahoo.co.uk</a>><br>
>> To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
>>         beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a>><br>
>> Subject: [Haskell-beginners] Parsing<br>
>> Message-ID: <<a href="mailto:2C66C9DC-30AF-41C5-B9AF-0D1DA19E0A2C@yahoo.co.uk" target="_blank">2C66C9DC-30AF-41C5-B9AF-0D1DA<wbr>19E0A2C@yahoo.co.uk</a>><br>
>> Content-Type: text/plain; charset=utf-8<br>
>><br>
>> I have<br>
>> data PackageDec = Pkg String deriving Show<br>
>><br>
>> and a parser for it<br>
>><br>
>> packageP :: Parser PackageDec<br>
>> packageP = do<br>
>>     literal “package"<br>
>>     x  <- identifier<br>
>>     xs <- many ((:) <$> char '.' <*> identifier)<br>
>>     return $ Pkg . concat $ (x:xs)<br>
>><br>
>> so I’m parsing for this sort  of string<br>
>> “package <a href="http://some.sort.of.name" target="_blank">some.sort.of.name</a>”<br>
>><br>
>> and I’m trying to rewrite the packageP parser in applicative style. As a<br>
>> not quite correct start I have<br>
>><br>
>> packageP' :: Parser PackageDec<br>
>> packageP' = literal "package" >>  Pkg . concat <$> many ((:) <$> char '.'<br>
>> <*> identifier)<br>
>><br>
>> but I can’t see how to get the ‘first’ identifier into this sequence -<br>
>> i.e. the bit that corresponds to  x <- identifier        in the<br>
>> monadic version.<br>
>><br>
>> in ghci<br>
>> λ-> :t many ((:) <$> char '.' <*> identifier)<br>
>> many ((:) <$> char '.' <*> identifier) :: Parser [[Char]]<br>
>><br>
>> so I think that somehow I need to get the ‘first’ identifier into a list<br>
>> just after  Pkg . concat  so that the whole list gets flattened and<br>
>> everybody is happy!<br>
>><br>
>> Any help appreciated.<br>
>><br>
>> Thanks<br>
>> Mike<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> ------------------------------<br>
>><br>
>> Message: 2<br>
>> Date: Fri, 14 Apr 2017 14:17:42 -0400<br>
>> From: David McBride <<a href="mailto:toad3k@gmail.com" target="_blank">toad3k@gmail.com</a>><br>
>> To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
>>         beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a>><br>
>> Subject: Re: [Haskell-beginners] Parsing<br>
>> Message-ID:<br>
>><br>
>> <<a href="mailto:CAN%2BTr42ifDF62sXo6WDq32rBAPHQ%2BeqTkJeuk-dNr8pDfRSZXg@mail.gmail.com" target="_blank">CAN+Tr42ifDF62sXo6WDq32rBAPHQ<wbr>+eqTkJeuk-dNr8pDfRSZXg@mail.gm<wbr>ail.com</a>><br>
>> Content-Type: text/plain; charset=UTF-8<br>
>><br>
>> Try breaking it up into pieces.  There a literal "package" which is<br>
>> dropped.  There is a first identifier, then there are the rest of the<br>
>> identifiers (a list), then those two things are combined somehow (with<br>
>> :).<br>
>><br>
>> literal "package" *> (:) <$> identifier <*> restOfIdentifiers<br>
>> where<br>
>>   restOfIdentifiers :: Applicative f => f [String]<br>
>>   restOfIdentifiers = many ((:) <$> char '.' <*> identifier<br>
>><br>
>> I have not tested this code, but it should be close to what you are<br>
>> looking for.<br>
>><br>
>> On Fri, Apr 14, 2017 at 2:02 PM, mike h <<a href="mailto:mike_k_houghton@yahoo.co.uk" target="_blank">mike_k_houghton@yahoo.co.uk</a>><br>
>> wrote:<br>
>> > I have<br>
>> > data PackageDec = Pkg String deriving Show<br>
>> ><br>
>> > and a parser for it<br>
>> ><br>
>> > packageP :: Parser PackageDec<br>
>> > packageP = do<br>
>> >     literal “package"<br>
>> >     x  <- identifier<br>
>> >     xs <- many ((:) <$> char '.' <*> identifier)<br>
>> >     return $ Pkg . concat $ (x:xs)<br>
>> ><br>
>> > so I’m parsing for this sort  of string<br>
>> > “package <a href="http://some.sort.of.name" target="_blank">some.sort.of.name</a>”<br>
>> ><br>
>> > and I’m trying to rewrite the packageP parser in applicative style. As a<br>
>> > not quite correct start I have<br>
>> ><br>
>> > packageP' :: Parser PackageDec<br>
>> > packageP' = literal "package" >>  Pkg . concat <$> many ((:) <$> char<br>
>> > '.' <*> identifier)<br>
>> ><br>
>> > but I can’t see how to get the ‘first’ identifier into this sequence -<br>
>> > i.e. the bit that corresponds to  x <- identifier        in the<br>
>> > monadic version.<br>
>> ><br>
>> > in ghci<br>
>> > λ-> :t many ((:) <$> char '.' <*> identifier)<br>
>> > many ((:) <$> char '.' <*> identifier) :: Parser [[Char]]<br>
>> ><br>
>> > so I think that somehow I need to get the ‘first’ identifier into a list<br>
>> > just after  Pkg . concat  so that the whole list gets flattened and<br>
>> > everybody is happy!<br>
>> ><br>
>> > Any help appreciated.<br>
>> ><br>
>> > Thanks<br>
>> > Mike<br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> > ______________________________<wbr>_________________<br>
>> > Beginners mailing list<br>
>> > <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
>> > <a id="m_-5034798227068251580m_-4394068359948768308LPlnk215229" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">
http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a>
</div><div id="m_-5034798227068251580m_-4394068359948768308LPBorder_GT_14925606427020.7047631838200863" style="width:100%;text-indent:0px;overflow:auto;margin-bottom:20px">
<table id="m_-5034798227068251580m_-4394068359948768308LPContainer_14925606426970.7489140058598118" style="width:90%;overflow:auto;padding-top:20px;padding-bottom:20px;margin-top:20px;border-top-color:rgb(200,200,200);border-bottom-color:rgb(200,200,200);border-top-width:1px;border-bottom-width:1px;border-top-style:dotted;border-bottom-style:dotted;background-color:rgb(255,255,255)" cellspacing="0">
<tbody>
<tr valign="top" style="border-spacing:0px">
<td id="m_-5034798227068251580m_-4394068359948768308TextCell_14925606426980.6054681084088598" style="padding:0px;vertical-align:top;display:table-cell" colspan="2">
<div id="m_-5034798227068251580m_-4394068359948768308LPRemovePreviewContainer_14925606426980.8172111722476187"></div>
<div id="m_-5034798227068251580m_-4394068359948768308LPTitle_14925606426980.8295803737914904" style="color:rgb(0,120,215);line-height:21px;font-family:"wf_segoe-ui_light","Segoe UI Light","Segoe WP Light","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:21px;font-weight:400">
<a id="m_-5034798227068251580m_-4394068359948768308LPUrlAnchor_14925606426990.30872293353112656" style="text-decoration:none" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">Haskell-Beginners Info Page</a></div>
<div id="m_-5034798227068251580m_-4394068359948768308LPMetadata_14925606426990.26745119892908864" style="margin:10px 0px 16px;color:rgb(102,102,102);line-height:14px;font-family:"wf_segoe-ui_normal","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:14px;font-weight:400">
<a href="http://mail.haskell.org" target="_blank">mail.haskell.org</a></div>
<div id="m_-5034798227068251580m_-4394068359948768308LPDescription_14925606427000.7315734147187907" style="color:rgb(102,102,102);line-height:20px;overflow:hidden;font-family:"wf_segoe-ui_normal","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:14px;font-weight:400;display:block;max-height:100px">
Haskell-Beginners -- The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell About Haskell-Beginners</div>
</td>
</tr>
</tbody>
</table>
</div><div class="m_-5034798227068251580elided-text">
<br>
<br>
>><br>
>><br>
>> ------------------------------<br>
>><br>
>> Message: 3<br>
>> Date: Fri, 14 Apr 2017 20:35:32 +0200<br>
>> From: Francesco Ariis <<a href="mailto:fa-ml@ariis.it" target="_blank">fa-ml@ariis.it</a>><br>
>> To: <a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a><br>
>> Subject: Re: [Haskell-beginners] Parsing<br>
>> Message-ID: <<a href="mailto:20170414183532.GA4376@casa.ca">20170414183532.GA4376@casa.ca</a><wbr>sa><br>
>> Content-Type: text/plain; charset=utf-8<br>
>><br>
>> On Fri, Apr 14, 2017 at 07:02:37PM +0100, mike h wrote:<br>
>> > I have<br>
>> > data PackageDec = Pkg String deriving Show<br>
>> ><br>
>> > and a parser for it<br>
>> ><br>
>> > packageP :: Parser PackageDec<br>
>> > packageP = do<br>
>> >     literal “package"<br>
>> >     x  <- identifier<br>
>> >     xs <- many ((:) <$> char '.' <*> identifier)<br>
>> >     return $ Pkg . concat $ (x:xs)<br>
>> ><br>
>> > so I’m parsing for this sort  of string<br>
>> > “package <a href="http://some.sort.of.name" target="_blank">some.sort.of.name</a>”<br>
>> ><br>
>> > and I’m trying to rewrite the packageP parser in applicative style. As a<br>
>> > not quite correct start I have<br>
>><br>
>> Hello Mike,<br>
>><br>
>>     I am not really sure what you are doing here? You are parsing a dot<br>
>> separated list (like.this.one) but at the end you are concatenating all<br>
>> together, why?<br>
>> Are you sure you are not wanting [String] instead of String?<br>
>><br>
>> If so, Parsec comes with some handy parser combinators [1], maybe one of<br>
>> them could fit your bill:<br>
>><br>
>>     -- should work<br>
>>     packageP = literal "package" *> Pkg <$> sepEndBy1 identifier (char<br>
>> '.')<br>
>><br>
>> [1]<br>
>> <a id="m_-5034798227068251580m_-4394068359948768308LPlnk417146" href="https://hackage.haskell.org/package/parsec-3.1.11/docs/Text-Parsec-Combinator.html" target="_blank">
https://hackage.haskell.org/pa<wbr>ckage/parsec-3.1.11/docs/Text-<wbr>Parsec-Combinator.html</a><br>
>><br>
>><br>
>> ------------------------------<br>
>><br>
>> Message: 4<br>
>> Date: Fri, 14 Apr 2017 20:12:14 +0100<br>
>> From: mike h <<a href="mailto:mike_k_houghton@yahoo.co.uk" target="_blank">mike_k_houghton@yahoo.co.uk</a>><br>
>> To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
>>         beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a>><br>
>> Subject: Re: [Haskell-beginners] Parsing<br>
>> Message-ID: <<a href="mailto:FF162CDE-E7E8-421B-A92E-057A643EE1A8@yahoo.co.uk" target="_blank">FF162CDE-E7E8-421B-A92E-057A6<wbr>43EE1A8@yahoo.co.uk</a>><br>
>> Content-Type: text/plain; charset=utf-8<br>
>><br>
>> Hi David,<br>
>><br>
>> Thanks but I tried something like that before I posted. I’ll try again<br>
>> maybe I mistyped.<br>
>><br>
>> Mike<br>
>> > On 14 Apr 2017, at 19:17, David McBride <<a href="mailto:toad3k@gmail.com" target="_blank">toad3k@gmail.com</a>> wrote:<br>
>> ><br>
>> > Try breaking it up into pieces.  There a literal "package" which is<br>
>> > dropped.  There is a first identifier, then there are the rest of the<br>
>> > identifiers (a list), then those two things are combined somehow (with<br>
>> > :).<br>
>> ><br>
>> > literal "package" *> (:) <$> identifier <*> restOfIdentifiers<br>
>> > where<br>
>> >  restOfIdentifiers :: Applicative f => f [String]<br>
>> >  restOfIdentifiers = many ((:) <$> char '.' <*> identifier<br>
>> ><br>
>> > I have not tested this code, but it should be close to what you are<br>
>> > looking for.<br>
>> ><br>
>> > On Fri, Apr 14, 2017 at 2:02 PM, mike h <<a href="mailto:mike_k_houghton@yahoo.co.uk" target="_blank">mike_k_houghton@yahoo.co.uk</a>><br>
>> > wrote:<br>
>> >> I have<br>
>> >> data PackageDec = Pkg String deriving Show<br>
>> >><br>
>> >> and a parser for it<br>
>> >><br>
>> >> packageP :: Parser PackageDec<br>
>> >> packageP = do<br>
>> >>    literal “package"<br>
>> >>    x  <- identifier<br>
>> >>    xs <- many ((:) <$> char '.' <*> identifier)<br>
>> >>    return $ Pkg . concat $ (x:xs)<br>
>> >><br>
>> >> so I’m parsing for this sort  of string<br>
>> >> “package <a href="http://some.sort.of.name" target="_blank">some.sort.of.name</a>”<br>
>> >><br>
>> >> and I’m trying to rewrite the packageP parser in applicative style. As<br>
>> >> a not quite correct start I have<br>
>> >><br>
>> >> packageP' :: Parser PackageDec<br>
>> >> packageP' = literal "package" >>  Pkg . concat <$> many ((:) <$> char<br>
>> >> '.' <*> identifier)<br>
>> >><br>
>> >> but I can’t see how to get the ‘first’ identifier into this sequence -<br>
>> >> i.e. the bit that corresponds to  x <- identifier        in the<br>
>> >> monadic version.<br>
>> >><br>
>> >> in ghci<br>
>> >> λ-> :t many ((:) <$> char '.' <*> identifier)<br>
>> >> many ((:) <$> char '.' <*> identifier) :: Parser [[Char]]<br>
>> >><br>
>> >> so I think that somehow I need to get the ‘first’ identifier into a<br>
>> >> list just after  Pkg . concat  so that the whole list gets flattened and<br>
>> >> everybody is happy!<br>
>> >><br>
>> >> Any help appreciated.<br>
>> >><br>
>> >> Thanks<br>
>> >> Mike<br>
>> >><br>
>> >><br>
>> >><br>
>> >><br>
>> >><br>
>> >> ______________________________<wbr>_________________<br>
>> >> Beginners mailing list<br>
>> >> <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
>> >> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a><br>
>> > ______________________________<wbr>_________________<br>
>> > Beginners mailing list<br>
>> > <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
>> > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a><br>
>><br>
>><br>
>><br>
>> ------------------------------<br>
>><br>
>> Message: 5<br>
>> Date: Fri, 14 Apr 2017 20:19:40 +0100<br>
>> From: mike h <<a href="mailto:mike_k_houghton@yahoo.co.uk" target="_blank">mike_k_houghton@yahoo.co.uk</a>><br>
>> To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
>>         beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a>><br>
>> Subject: Re: [Haskell-beginners] Parsing<br>
>> Message-ID: <<a href="mailto:D208C2B2-6E38-427D-9EAF-B9EA8532D873@yahoo.co.uk" target="_blank">D208C2B2-6E38-427D-9EAF-B9EA8<wbr>532D873@yahoo.co.uk</a>><br>
>> Content-Type: text/plain; charset="utf-8"<br>
>><br>
>> Hi Francesco,<br>
>> Yes, I think you are right with "Are you sure you are not wanting [String]<br>
>> instead of String?”<br>
>><br>
>> I could use Parsec but I’m building up a parser library from first<br>
>> principles i.e.<br>
>><br>
>> newtype Parser a = P (String -> [(a,String)])<br>
>><br>
>> parse :: Parser a -> String -> [(a,String)]<br>
>> parse (P p)  = p<br>
>><br>
>> and so on….<br>
>><br>
>> It’s just an exercise to see how far I can get. And its good fun. So maybe<br>
>> I need add another combinator or to what I already have.<br>
>><br>
>> Thanks<br>
>><br>
>> Mike<br>
>><br>
>><br>
>> > On 14 Apr 2017, at 19:35, Francesco Ariis <<a href="mailto:fa-ml@ariis.it" target="_blank">fa-ml@ariis.it</a>> wrote:<br>
>> ><br>
>> > On Fri, Apr 14, 2017 at 07:02:37PM +0100, mike h wrote:<br>
>> >> I have<br>
>> >> data PackageDec = Pkg String deriving Show<br>
>> >><br>
>> >> and a parser for it<br>
>> >><br>
>> >> packageP :: Parser PackageDec<br>
>> >> packageP = do<br>
>> >>    literal “package"<br>
>> >>    x  <- identifier<br>
>> >>    xs <- many ((:) <$> char '.' <*> identifier)<br>
>> >>    return $ Pkg . concat $ (x:xs)<br>
>> >><br>
>> >> so I’m parsing for this sort  of string<br>
>> >> “package <a href="http://some.sort.of.name" target="_blank">some.sort.of.name</a>”<br>
>> >><br>
>> >> and I’m trying to rewrite the packageP parser in applicative style. As<br>
>> >> a not quite correct start I have<br>
>> ><br>
>> > Hello Mike,<br>
>> ><br>
>> >    I am not really sure what you are doing here? You are parsing a dot<br>
>> > separated list (like.this.one) but at the end you are concatenating all<br>
>> > together, why?<br>
>> > Are you sure you are not wanting [String] instead of String?<br>
>> ><br>
>> > If so, Parsec comes with some handy parser combinators [1], maybe one of<br>
>> > them could fit your bill:<br>
>> ><br>
>> >    -- should work<br>
>> >    packageP = literal "package" *> Pkg <$> sepEndBy1 identifier (char<br>
>> > '.')<br>
>> ><br>
>> > [1]<br>
>> > <a href="https://hackage.haskell.org/package/parsec-3.1.11/docs/Text-Parsec-Combinator.html" target="_blank">
https://hackage.haskell.org/pa<wbr>ckage/parsec-3.1.11/docs/Text-<wbr>Parsec-Combinator.html</a><br>
>> > <<a href="https://hackage.haskell.org/package/parsec-3.1.11/docs/Text-Parsec-Combinator.html" target="_blank">https://hackage.haskell.org/p<wbr>ackage/parsec-3.1.11/docs/Text<wbr>-Parsec-Combinator.html</a>><br>
>> > ______________________________<wbr>_________________<br>
>> > Beginners mailing list<br>
>> > <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a> <<a href="mailto:Beginners@haskell.org" target="_blank">mailto:Beginners@haskell.org</a>><br>
>> > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a><br>
>> > <<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-b<wbr>in/mailman/listinfo/beginners</a>><br>
>> -------------- next part --------------<br>
>> An HTML attachment was scrubbed...<br>
>> URL:<br>
>> <<a href="http://mail.haskell.org/pipermail/beginners/attachments/20170414/66a17133/attachment.html" target="_blank">http://mail.haskell.org/piper<wbr>mail/beginners/attachments/<wbr>20170414/66a17133/attachment.<wbr>html</a>><br>
>><br>
>> ------------------------------<br>
>><br>
>> Subject: Digest Footer<br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Beginners mailing list<br>
>> <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a><br>
>><br>
>><br>
>> ------------------------------<br>
>><br>
>> End of Beginners Digest, Vol 106, Issue 7<br>
>> ******************************<wbr>***********<br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Beginners mailing list<br>
> <a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a><br>
><br>
______________________________<wbr>_________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/beginners</a><br>
</div></div>
</span></font></div>
</div>
</div>

<br>______________________________<wbr>_________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">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-bi<wbr>n/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div></div></div></div>