Konstantine Rybnikov | 24 Mar 23:19 2013

Parsec community and up-to-date documentation

Hi!

I've been busy with (trying to) learning/using parsec lately and as a beginner had a lot of headache starting from outdated documentation in various places, lack of more tutorials, confusion between Text.Parsec and Text.ParseCombinator modules and so on.

While I solved most of my problems via googling / reading stackoverflow / reading source code (of outdated version first, btw, the one I got from Daan's homepage :), I still had a feeling all the time that I'm doing something wrong and that I can't find place where "party is going on".

So I wondered, what can I do to create a community around Parsec, to get issue tracking, pull-requests, up-to-date comprehensive documentation and tutorials etc.? Parsec seems like a perfect candidate for something like this.

Thank you.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Kim-Ee Yeoh | 25 Mar 00:11 2013

Re: Parsec community and up-to-date documentation

On Mon, Mar 25, 2013 at 5:19 AM, Konstantine Rybnikov <k-bx <at> k-bx.com> wrote:
> as a beginner had a lot of headache starting from outdated documentation in
> various places, lack of more tutorials, confusion between Text.Parsec and
> Text.ParseCombinator modules and so on.

You're indeed right.

> While I solved most of my problems via googling / reading stackoverflow /
> reading source code (of outdated version first, btw, the one I got from
> Daan's homepage :),  I still had a feeling all the time that I'm doing
> something wrong and that I can't find place where "party is going on".

If you look at the dates of the papers on Wikipedia [1], the party was
totally hoppin' in the last decade of the previous century. Not so
much since. Sigh.

> So I wondered, what can I do to create a community around Parsec, to get
> issue tracking, pull-requests, up-to-date comprehensive documentation and
> tutorials etc.? Parsec seems like a perfect candidate for something like
> this.

While the experience is still fresh in your mind, may I suggest that
you write a note or two on the most confusing things you encountered
and how you dealt with them? Making your notes public is a way of
gathering a community around shared experiences.

Also, the denizens of the haskell IRC at freenode will gladly converse
with you about parsec. The same goes for subscribers to this list and
also haskell-beginners.

[1] http://en.wikipedia.org/wiki/Parser_combinator

-- Kim-Ee
Konstantine Rybnikov | 25 Mar 00:48 2013

Re: Parsec community and up-to-date documentation

On Mon, Mar 25, 2013 at 1:11 AM, Kim-Ee Yeoh <ky3 <at> atamo.com> wrote:

On Mon, Mar 25, 2013 at 5:19 AM, Konstantine Rybnikov <k-bx <at> k-bx.com> wrote:
> as a beginner had a lot of headache starting from outdated documentation in
> various places, lack of more tutorials, confusion between Text.Parsec and
> Text.ParseCombinator modules and so on.

You're indeed right.

> While I solved most of my problems via googling / reading stackoverflow /
> reading source code (of outdated version first, btw, the one I got from
> Daan's homepage :),  I still had a feeling all the time that I'm doing
> something wrong and that I can't find place where "party is going on".

If you look at the dates of the papers on Wikipedia [1], the party was
totally hoppin' in the last decade of the previous century. Not so
much since. Sigh.

> So I wondered, what can I do to create a community around Parsec, to get
> issue tracking, pull-requests, up-to-date comprehensive documentation and
> tutorials etc.? Parsec seems like a perfect candidate for something like
> this.

While the experience is still fresh in your mind, may I suggest that
you write a note or two on the most confusing things you encountered
and how you dealt with them? Making your notes public is a way of
gathering a community around shared experiences.

These things are mostly small ones. The main issue is outdated tutorial [3] page. From what I can remember now:

1.  my confusion definitely began with export-confusion (explaining about Parsec3 / Parsec2, Text.Parsec and Text.ParseCombinator modules) in various places (realworldhaskell book [1], parsec's homepage [2])
2.  also, while [2] looks like a homepage for parsec, it's also quite old and points to old version of sources, for example.
2.  new parsec3 API (and examples with monad-transformer, parsing of Text) should be added to [3]. The thing I was looking for (and began implementing just before I noticed my parsec is too old and new one has what I need) was also from new API, it was anyToken function. So I was able now to write:

skipWhileNot p =
  do { try (lookAhead p) }
  <|> do { anyToken;
           skipWhileNot p }

combinator that would let me skip pieces of information I can't parse.

3.  add type declarations and explanation into [3]
4.  documentation [3] should be split into multiple pages with better navigation
5.  not a concrete suggestion, but just adding more examples would be great

I'm sure there were plenty concrete suggestions / small improvements that I already forgot. I absolutely agree that it's better to write notes when memories are fresh, that's why I think having issue tracking and ability to do small pull-requests would really help.

Also, the denizens of the haskell IRC at freenode will gladly converse
with you about parsec. The same goes for subscribers to this list and
also haskell-beginners.

[1] http://en.wikipedia.org/wiki/Parser_combinator

-- Kim-Ee


It's great that haskell community is such welcome for beginners, thanks.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Roman Cheplyaka | 25 Mar 07:49 2013

Re: Parsec community and up-to-date documentation

* Konstantine Rybnikov <k-bx <at> k-bx.com> [2013-03-25 00:19:04+0200]
> Hi!
> 
> I've been busy with (trying to) learning/using parsec lately and as a
> beginner had a lot of headache starting from outdated documentation in
> various places, lack of more tutorials, confusion between Text.Parsec and
> Text.ParseCombinator modules and so on.
> 
> While I solved most of my problems via googling / reading stackoverflow /
> reading source code (of outdated version first, btw, the one I got from
> Daan's homepage :), I still had a feeling all the time that I'm doing
> something wrong and that I can't find place where "party is going on".
> 
> So I wondered, what can I do to create a community around Parsec, to get
> issue tracking, pull-requests, up-to-date comprehensive documentation and
> tutorials etc.? Parsec seems like a perfect candidate for something like
> this.

A couple of years ago I decided to do pretty much this — create
up-to-date comprehensive documentation for Parsec. Unfortunately, the
project turned out too ambitious for me at the time. The only part of it
that I've finished is published as this SO answer: 
http://stackoverflow.com/a/6040237/110081

Of course, SO answers are not a substitute for good documentation, but
they are a good way to start, and you can later merge those answers into
something more coherent. So this is one way you approach it — just
publish the knowledge you've acquired as self-answered questions on SO.

Roman

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Konstantine Rybnikov | 25 Mar 10:22 2013

Re: Parsec community and up-to-date documentation

On Mon, Mar 25, 2013 at 8:49 AM, Roman Cheplyaka <roma <at> ro-che.info> wrote:
* Konstantine Rybnikov <k-bx <at> k-bx.com> [2013-03-25 00:19:04+0200]
> Hi!
>
> I've been busy with (trying to) learning/using parsec lately and as a
> beginner had a lot of headache starting from outdated documentation in
> various places, lack of more tutorials, confusion between Text.Parsec and
> Text.ParseCombinator modules and so on.
>
> While I solved most of my problems via googling / reading stackoverflow /
> reading source code (of outdated version first, btw, the one I got from
> Daan's homepage :), I still had a feeling all the time that I'm doing
> something wrong and that I can't find place where "party is going on".
>
> So I wondered, what can I do to create a community around Parsec, to get
> issue tracking, pull-requests, up-to-date comprehensive documentation and
> tutorials etc.? Parsec seems like a perfect candidate for something like
> this.

A couple of years ago I decided to do pretty much this — create
up-to-date comprehensive documentation for Parsec. Unfortunately, the
project turned out too ambitious for me at the time. The only part of it
that I've finished is published as this SO answer:
http://stackoverflow.com/a/6040237/110081

Of course, SO answers are not a substitute for good documentation, but
they are a good way to start, and you can later merge those answers into
something more coherent. So this is one way you approach it — just
publish the knowledge you've acquired as self-answered questions on SO.

Roman

Thanks, Roman. I've totally read this answer some time yesterday (too late, unfortunately). You also seemed (due to logs) to implement functionality I needed (lookAhead, if I'm not mistaken). Thanks!

But I just don't understand why such a basic thing as live community-hub for a project (github page would be enough for this) is so hard to create. I'm also not saying I would write a lot of docs, but at least making them more "up to date" doesn't look as too ambitious task.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Roman Cheplyaka | 25 Mar 10:35 2013

Re: Parsec community and up-to-date documentation

* Konstantine Rybnikov <k-bx <at> k-bx.com> [2013-03-25 11:22:21+0200]
> On Mon, Mar 25, 2013 at 8:49 AM, Roman Cheplyaka <roma <at> ro-che.info> wrote:
> 
> > * Konstantine Rybnikov <k-bx <at> k-bx.com> [2013-03-25 00:19:04+0200]
> > > Hi!
> > >
> > > I've been busy with (trying to) learning/using parsec lately and as a
> > > beginner had a lot of headache starting from outdated documentation in
> > > various places, lack of more tutorials, confusion between Text.Parsec and
> > > Text.ParseCombinator modules and so on.
> > >
> > > While I solved most of my problems via googling / reading stackoverflow /
> > > reading source code (of outdated version first, btw, the one I got from
> > > Daan's homepage :), I still had a feeling all the time that I'm doing
> > > something wrong and that I can't find place where "party is going on".
> > >
> > > So I wondered, what can I do to create a community around Parsec, to get
> > > issue tracking, pull-requests, up-to-date comprehensive documentation and
> > > tutorials etc.? Parsec seems like a perfect candidate for something like
> > > this.
> >
> > A couple of years ago I decided to do pretty much this — create
> > up-to-date comprehensive documentation for Parsec. Unfortunately, the
> > project turned out too ambitious for me at the time. The only part of it
> > that I've finished is published as this SO answer:
> > http://stackoverflow.com/a/6040237/110081
> >
> > Of course, SO answers are not a substitute for good documentation, but
> > they are a good way to start, and you can later merge those answers into
> > something more coherent. So this is one way you approach it — just
> > publish the knowledge you've acquired as self-answered questions on SO.
> >
> > Roman
> >
> 
> Thanks, Roman. I've totally read this answer some time yesterday (too late,
> unfortunately). You also seemed (due to logs) to implement functionality I
> needed (lookAhead, if I'm not mistaken). Thanks!
> 
> But I just don't understand why such a basic thing as live community-hub
> for a project (github page would be enough for this) is so hard to create.
> I'm also not saying I would write a lot of docs, but at least making them
> more "up to date" doesn't look as too ambitious task.

It's not hard to create — it's hard to get traction.

Anyway, don't be discouraged by my experience. Go for it!

I put back my original repo at https://github.com/feuerbach/parsec-doc —
feel free to use it. In particular, it contains an interesting analysis
of parsec usage by Dmitry Astapov.

Roman

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Gmane