Hi Roger,<div>On the contrary, I think that a parser combinator is a very modular solution. Each type of parseable string can be</div><div>recursively defined with the monadic functions of the combinator. These functions, of course, don't care about context and can be used wherever appropriate. If you send me a test file of headers and related outputs, I might see if I can whip something up to try to change your mind.</div>
<div><br></div><div>Regards,</div><div>Tim Holland<br><br><div class="gmail_quote">On 28 June 2013 09:40, <span dir="ltr"><<a href="mailto:beginners-request@haskell.org" target="_blank">beginners-request@haskell.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send Beginners mailing list submissions to<br>
<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
or, via email, send a message with subject or body 'help' to<br>
<a href="mailto:beginners-request@haskell.org">beginners-request@haskell.org</a><br>
<br>
You can reach the person managing the list at<br>
<a href="mailto:beginners-owner@haskell.org">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. Re: How to Lex, Parse, and Serialize-to-XML email messages<br>
(Costello, Roger L.)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 28 Jun 2013 16:40:01 +0000<br>
From: "Costello, Roger L." <<a href="mailto:costello@mitre.org">costello@mitre.org</a>><br>
Subject: Re: [Haskell-beginners] How to Lex, Parse, and<br>
Serialize-to-XML email messages<br>
To: "The Haskell-Beginners Mailing List - Discussion of primarily<br>
beginner-level topics related to Haskell" <<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>><br>
Message-ID:<br>
<<a href="mailto:B5FEE00B53CF054AA8439027E8FE17751EFA91FE@IMCMBX04.MITRE.ORG">B5FEE00B53CF054AA8439027E8FE17751EFA91FE@IMCMBX04.MITRE.ORG</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hi Tim,<br>
<br>
<br>
? I realize you've already finished with the project ...<br>
<br>
Actually, your message comes at an excellent time. I am not finished with the project. I have only finished one of the email headers -- the From Header.<br>
<br>
Just today I was wondering how to proceed next:<br>
<br>
<br>
- Should I extend my parser so that it deals with each of the other email headers? That is, create one monolithic parser for the entire email message? That doesn't seem very modular. I don't think that Happy supports importing other Happy parsers. Ideally I would create a parser for the From Header, a parser for the To Header, a parser for the Subject Header, and so forth. Then I would import each of them to create one unified email parser. If Happy doesn't support importing, I figured it might be better to switch to something that can combine parsers - a parser combinator - such as parsec. Unfortunately, I don't know anything about Parsec, but am eager to learn.<br>
<br>
- I wonder if I can use Happy to generate individual parsers - a parser for the From Header, a parser for the To Header, a parser for the Subject Header - and then use Parsec to combine them?<br>
<br>
As you see Tim, your suggestion to use parsec falls on receptive ears. I welcome all suggestions.<br>
<br>
/Roger<br>
<br>
From: <a href="mailto:beginners-bounces@haskell.org">beginners-bounces@haskell.org</a> [mailto:<a href="mailto:beginners-bounces@haskell.org">beginners-bounces@haskell.org</a>] On Behalf Of Tim Holland<br>
Sent: Friday, June 28, 2013 12:18 PM<br>
To: <a href="mailto:beginners@haskell.org">beginners@haskell.org</a><br>
Subject: Re: [Haskell-beginners] How to Lex, Parse, and Serialize-to-XML email messages<br>
<br>
Hi Roger,<br>
<br>
I realize you've already finished with the project, but for the future I think its a lot easier to use a parser combinator with Text.Parsec and Text.Parsec.String to do a similar thing. For example, if you were parsing XML to get a parse a single tag, you would try something like this:<br>
<br>
parseTag :: Parser Tag<br>
parseTag = many1 alphanum <?> "tag"<br>
<br>
To get a tagged form, try<br>
parseTagged :: Parser (Tag, [Elem])<br>
parseTagged = do<br>
char '<'<br>
name <- parseTag<br>
char '>'<br>
content <- many (try parseElem)<br>
string "</"<br>
parseTag<br>
char '>'<br>
return (name, content)<br>
<?> "tagged form"<br>
<br>
and so one. I haven't tried this out, but a parser similar to yours would go something like this:<br>
<br>
--Datatypes<br>
type DisplayName = String<br>
type EmailAddress = String<br>
data Mailbox = Mailbox DisplayName EmailAddress deriving (Show)<br>
<br>
parseFromHeader :: Parser [Mailbox]<br>
parseFromHeader = do<br>
string "From: "<br>
mailboxes = many (try parseMailbox)<br>
return mailboxes<br>
<br>
parseMailbox :: Parser Mailbox<br>
parseMailbox = do<br>
parseComments<br>
-- Names are optional<br>
parseComments<br>
name <- try parseDisplayName<br>
parseComments<br>
address <- parseEmailAddress<br>
parseComments<br>
try char ','<br>
return Mailbox name address<br>
<?> "Parse an indidivuals mailbox"<br>
<br>
parseEmailAddress :: Parser EmailAddress<br>
parseEmailAddress = do<br>
try char '<'<br>
handle <- many1 (noneof "@") -- Or whatever is valid here<br>
char '@'<br>
domain <- parseDomain<br>
try char '<'<br>
return handle++@++domain<br>
<br>
parseDomain :: Parser String<br>
parseDomain =<br>
(char '[' >> parseDomain >>= (\domainName -> do char ']'<br>
return domainName))<br>
<|> parseWebsiteName >>= return<br>
<br>
And so on. Again, I've tested none of the Email header bits but the XML bit works. It requires some level of comfort with monadic operations, but beyond that I think it's a much simpler may to parse.<br>
<br>
Regards,<br>
Tim Holland<br>
<br>
<br>
<br>
<br>
<br>
On 28 June 2013 03:00, <<a href="mailto:beginners-request@haskell.org">beginners-request@haskell.org</a><mailto:<a href="mailto:beginners-request@haskell.org">beginners-request@haskell.org</a>>> wrote:<br>
Send Beginners mailing list submissions to<br>
<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
or, via email, send a message with subject or body 'help' to<br>
<a href="mailto:beginners-request@haskell.org">beginners-request@haskell.org</a><mailto:<a href="mailto:beginners-request@haskell.org">beginners-request@haskell.org</a>><br>
<br>
You can reach the person managing the list at<br>
<a href="mailto:beginners-owner@haskell.org">beginners-owner@haskell.org</a><mailto:<a href="mailto:beginners-owner@haskell.org">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. data declaration using other type's names? (Patrick Redmond)<br>
2. Re: data declaration using other type's names? (Brandon Allbery)<br>
3. Re: data declaration using other type's names? (Nikita Danilenko)<br>
4. Re: what to do about excess memory usage (Chadda? Fouch?)<br>
5. Re: what to do about excess memory usage (James Jones)<br>
6. How to Lex, Parse, and Serialize-to-XML email messages<br>
(Costello, Roger L.)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 27 Jun 2013 11:24:51 -0400<br>
From: Patrick Redmond <<a href="mailto:plredmond@gmail.com">plredmond@gmail.com</a><mailto:<a href="mailto:plredmond@gmail.com">plredmond@gmail.com</a>>><br>
Subject: [Haskell-beginners] data declaration using other type's<br>
names?<br>
To: <a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>><br>
Message-ID:<br>
<CAHUea4FfBP8L1kU+tS1-2cVPvAB4h22j35JcNwRC-jGds0=<a href="mailto:v6g@mail.gmail.com">v6g@mail.gmail.com</a><mailto:<a href="mailto:v6g@mail.gmail.com">v6g@mail.gmail.com</a>>><br>
Content-Type: text/plain; charset=UTF-8<br>
<br>
Hey Haskellers,<br>
<br>
I noticed that ghci lets me do this:<br>
<br>
> data Foo = Int Int | Float<br>
> :t Int<br>
Int :: Int -> Foo<br>
> :t Float<br>
Float :: Foo<br>
> :t Int 4<br>
Int 4 :: Foo<br>
<br>
It's confusing to have type constructors that use names of existing<br>
types. It's not intuitive that the name "Int" could refer to two<br>
different things, which brings me to:<br>
<br>
> data Bar = Bar Int<br>
> :t Bar<br>
Bar :: Int -> Bar<br>
<br>
Yay? I can have a simple type with one constructor named the same as the type.<br>
<br>
Why is this allowed? Is it useful somehow?<br>
<br>
--Patrick<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Thu, 27 Jun 2013 11:37:46 -0400<br>
From: Brandon Allbery <<a href="mailto:allbery.b@gmail.com">allbery.b@gmail.com</a><mailto:<a href="mailto:allbery.b@gmail.com">allbery.b@gmail.com</a>>><br>
Subject: Re: [Haskell-beginners] data declaration using other type's<br>
names?<br>
To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>>><br>
Message-ID:<br>
<<a href="mailto:CAKFCL4U-E4B_%2Bcts0vpNX8Ar9wccQDjgzWOYHLXLsLAv%2BQn_cg@mail.gmail.com">CAKFCL4U-E4B_+cts0vpNX8Ar9wccQDjgzWOYHLXLsLAv+Qn_cg@mail.gmail.com</a><mailto:<a href="mailto:CAKFCL4U-E4B_%252Bcts0vpNX8Ar9wccQDjgzWOYHLXLsLAv%252BQn_cg@mail.gmail.com">CAKFCL4U-E4B_%2Bcts0vpNX8Ar9wccQDjgzWOYHLXLsLAv%2BQn_cg@mail.gmail.com</a>>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
On Thu, Jun 27, 2013 at 11:24 AM, Patrick Redmond <<a href="mailto:plredmond@gmail.com">plredmond@gmail.com</a><mailto:<a href="mailto:plredmond@gmail.com">plredmond@gmail.com</a>>>wrote:<br>
<br>
> I noticed that ghci lets me do this:<br>
><br>
<br>
Not just ghci, but ghc as well.<br>
<br>
<br>
> Yay? I can have a simple type with one constructor named the same as the<br>
> type.<br>
> Why is this allowed? Is it useful somehow?<br>
><br>
<br>
It's convenient for pretty much the situation you showed, where the type<br>
constructor and data constructor have the same name. A number of people do<br>
advocate that it not be used, though, because it can be confusing for<br>
people. (Not for the compiler; data and type constructors can't be used in<br>
the same places, it never has trouble keeping straight which is which.)<br>
<br>
It might be best to consider this as "there is no good reason to *prevent*<br>
it from happening, from a language standpoint".<br>
<br>
--<br>
brandon s allbery kf8nh sine nomine associates<br>
<a href="mailto:allbery.b@gmail.com">allbery.b@gmail.com</a><mailto:<a href="mailto:allbery.b@gmail.com">allbery.b@gmail.com</a>> <a href="mailto:ballbery@sinenomine.net">ballbery@sinenomine.net</a><mailto:<a href="mailto:ballbery@sinenomine.net">ballbery@sinenomine.net</a>><br>
unix, openafs, kerberos, infrastructure, xmonad <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://www.haskell.org/pipermail/beginners/attachments/20130627/ea0e9cc5/attachment-0001.htm" target="_blank">http://www.haskell.org/pipermail/beginners/attachments/20130627/ea0e9cc5/attachment-0001.htm</a>><br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Thu, 27 Jun 2013 18:02:00 +0200<br>
From: Nikita Danilenko <<a href="mailto:nda@informatik.uni-kiel.de">nda@informatik.uni-kiel.de</a><mailto:<a href="mailto:nda@informatik.uni-kiel.de">nda@informatik.uni-kiel.de</a>>><br>
Subject: Re: [Haskell-beginners] data declaration using other type's<br>
names?<br>
To: <a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>><br>
Message-ID: <<a href="mailto:51CC61F8.9020506@informatik.uni-kiel.de">51CC61F8.9020506@informatik.uni-kiel.de</a><mailto:<a href="mailto:51CC61F8.9020506@informatik.uni-kiel.de">51CC61F8.9020506@informatik.uni-kiel.de</a>>><br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
Hi, Patrick,<br>
<br>
the namespaces for types and constructors are considered disjoint, i.e.<br>
you can use a name in both contexts. A simple example of this feature is<br>
your last definition<br>
<br>
> data Bar = Bar Int<br>
<br>
or even shorter<br>
<br>
> data A = A<br>
<br>
This is particularly useful for single-constructor types ? la<br>
<br>
> data MyType a = MyType a<br>
<br>
Clearly, using "Int" or "Float" as constructor names may seem odd, but<br>
when dealing with a simple grammar it is quite natural to write<br>
<br>
> data Exp = Num Int | Add Exp Exp<br>
<br>
although "Num" is a type class in Haskell.<br>
<br>
Best regards,<br>
<br>
Nikita<br>
<br>
On 27/06/13 17:24, Patrick Redmond wrote:<br>
> Hey Haskellers,<br>
><br>
> I noticed that ghci lets me do this:<br>
><br>
>> data Foo = Int Int | Float<br>
>> :t Int<br>
> Int :: Int -> Foo<br>
>> :t Float<br>
> Float :: Foo<br>
>> :t Int 4<br>
> Int 4 :: Foo<br>
><br>
> It's confusing to have type constructors that use names of existing<br>
> types. It's not intuitive that the name "Int" could refer to two<br>
> different things, which brings me to:<br>
><br>
>> data Bar = Bar Int<br>
>> :t Bar<br>
> Bar :: Int -> Bar<br>
><br>
> Yay? I can have a simple type with one constructor named the same as the type.<br>
><br>
> Why is this allowed? Is it useful somehow?<br>
><br>
> --Patrick<br>
><br>
> _______________________________________________<br>
> Beginners mailing list<br>
> <a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><mailto:<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a>><br>
> <a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Thu, 27 Jun 2013 18:23:25 +0200<br>
From: Chadda? Fouch? <<a href="mailto:chaddai.fouche@gmail.com">chaddai.fouche@gmail.com</a><mailto:<a href="mailto:chaddai.fouche@gmail.com">chaddai.fouche@gmail.com</a>>><br>
Subject: Re: [Haskell-beginners] what to do about excess memory usage<br>
To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>>><br>
Message-ID:<br>
<<a href="mailto:CANfjZRbGTvoECTMsriNDAUozbow1fUGt-9FRtG-XwRJ%2BDamiAw@mail.gmail.com">CANfjZRbGTvoECTMsriNDAUozbow1fUGt-9FRtG-XwRJ+DamiAw@mail.gmail.com</a><mailto:<a href="mailto:CANfjZRbGTvoECTMsriNDAUozbow1fUGt-9FRtG-XwRJ%252BDamiAw@mail.gmail.com">CANfjZRbGTvoECTMsriNDAUozbow1fUGt-9FRtG-XwRJ%2BDamiAw@mail.gmail.com</a>>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
First 2MB isn't a lot of RAM nowadays, do you mean 2GB or is that just<br>
compared to the rest of the program ?<br>
Second, your powersOfTen should probably be :<br>
<br>
> powersOfTen = iterate (10*) 1<br>
<br>
Or maybe even a Vector (if you can guess the maximum value asked of it) or<br>
a MemoTrie (if you can't) since list indexing is slow as hell.<br>
That could help with memoPair which should definitely be a Vector and not a<br>
list.<br>
<br>
Good luck (on the other hand, maybe your program is already "good enough"<br>
and you could just switch to another project)<br>
--<br>
Jedai<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://www.haskell.org/pipermail/beginners/attachments/20130627/f2da75ff/attachment-0001.htm" target="_blank">http://www.haskell.org/pipermail/beginners/attachments/20130627/f2da75ff/attachment-0001.htm</a>><br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Thu, 27 Jun 2013 18:28:27 -0500<br>
From: James Jones <<a href="mailto:jejones3141@gmail.com">jejones3141@gmail.com</a><mailto:<a href="mailto:jejones3141@gmail.com">jejones3141@gmail.com</a>>><br>
Subject: Re: [Haskell-beginners] what to do about excess memory usage<br>
To: The Haskell-Beginners Mailing List - Discussion of primarily<br>
beginner-level topics related to Haskell <<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>>><br>
Message-ID: <<a href="mailto:51CCCA9B.40807@gmail.com">51CCCA9B.40807@gmail.com</a><mailto:<a href="mailto:51CCCA9B.40807@gmail.com">51CCCA9B.40807@gmail.com</a>>><br>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
<br>
On 06/27/2013 11:23 AM, Chadda? Fouch? wrote:<br>
> First 2MB isn't a lot of RAM nowadays, do you mean 2GB or is that just<br>
> compared to the rest of the program ?<br>
<br>
It's a lot compared to the rest of the program... not to mention that<br>
I'm a fossil from the days of 8-bit microprocessors, so 2 MB seems like<br>
a lot of RAM to me. :)<br>
<br>
> Second, your powersOfTen should probably be :<br>
><br>
> > powersOfTen = iterate (10*) 1<br>
><br>
> Or maybe even a Vector (if you can guess the maximum value asked of<br>
> it) or a MemoTrie (if you can't) since list indexing is slow as hell.<br>
> That could help with memoPair which should definitely be a Vector and<br>
> not a list.<br>
<br>
Thanks!<br>
><br>
> Good luck (on the other hand, maybe your program is already "good<br>
> enough" and you could just switch to another project)<br>
> --<br>
> Jedai<br>
><br>
I do want to find a better way to keep the list of positions for ones<br>
around than a [Int], and I want to save them only as long as I need to,<br>
i.e. until I have both the 2 * k and 2 * k + 1 digit palindromes. Once<br>
that's done, I will move on. Thanks again!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Fri, 28 Jun 2013 09:30:30 +0000<br>
From: "Costello, Roger L." <<a href="mailto:costello@mitre.org">costello@mitre.org</a><mailto:<a href="mailto:costello@mitre.org">costello@mitre.org</a>>><br>
Subject: [Haskell-beginners] How to Lex, Parse, and Serialize-to-XML<br>
email messages<br>
To: "<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>>" <<a href="mailto:beginners@haskell.org">beginners@haskell.org</a><mailto:<a href="mailto:beginners@haskell.org">beginners@haskell.org</a>>><br>
Message-ID:<br>
<<a href="mailto:B5FEE00B53CF054AA8439027E8FE17751EFA9005@IMCMBX04.MITRE.ORG">B5FEE00B53CF054AA8439027E8FE17751EFA9005@IMCMBX04.MITRE.ORG</a><mailto:<a href="mailto:B5FEE00B53CF054AA8439027E8FE17751EFA9005@IMCMBX04.MITRE.ORG">B5FEE00B53CF054AA8439027E8FE17751EFA9005@IMCMBX04.MITRE.ORG</a>>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
Hi Folks,<br>
<br>
I am working toward being able to input any email message and output an equivalent XML encoding.<br>
<br>
I am starting small, with one of the email headers -- the "From Header"<br>
<br>
Here is an example of a From Header:<br>
<br>
From: John Doe <<a href="mailto:john@doe.org">john@doe.org</a><mailto:<a href="mailto:john@doe.org">john@doe.org</a>>><br>
<br>
I have successfully transformed it into this XML:<br>
<br>
<From><br>
<Mailbox><br>
<DisplayName>John Doe</DisplayName><br>
<Address><a href="mailto:john@doe.org">john@doe.org</a><mailto:<a href="mailto:john@doe.org">john@doe.org</a>></Address><br>
</Mailbox><br>
</From><br>
<br>
I used the lexical analyzer "Alex" [1] to break apart (tokenize) the From Header.<br>
<br>
I used the parser "Happy" [2] to process the tokens and generate a parse tree.<br>
<br>
Then I used a serializer to walk the parse tree and output XML.<br>
<br>
I posted to stackoverflow a complete description of how to lex, parse, and serialize-to-XML email From Headers:<br>
<br>
<a href="http://stackoverflow.com/questions/17354442/how-to-lex-parse-and-serialize-to-xml-email-messages-using-alex-and-happy" target="_blank">http://stackoverflow.com/questions/17354442/how-to-lex-parse-and-serialize-to-xml-email-messages-using-alex-and-happy</a><br>
<br>
/Roger<br>
<br>
[1] The Alex User's Guide may be found at this URL: <a href="http://www.haskell.org/alex/doc/html/" target="_blank">http://www.haskell.org/alex/doc/html/</a><br>
<br>
[2] The Happy User's Guide may be found at this URL: <a href="http://www.haskell.org/happy/" target="_blank">http://www.haskell.org/happy/</a><br>
<br>
<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><mailto:<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a>><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
<br>
<br>
End of Beginners Digest, Vol 60, Issue 38<br>
*****************************************<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://www.haskell.org/pipermail/beginners/attachments/20130628/50dc9101/attachment.htm" target="_blank">http://www.haskell.org/pipermail/beginners/attachments/20130628/50dc9101/attachment.htm</a>><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
<br>
<br>
End of Beginners Digest, Vol 60, Issue 40<br>
*****************************************<br>
</blockquote></div><br></div>