juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2011-01-29 01:46 pm

kind of got it now

Until I was told to take a look at coalgebras, and figured out that input deals with codata, and output deals with data, and that StringReader consists of mapping an algebra to a coalgebra, over the same affine functor, X -> AX + 1, I could not figure out how to properly connect my binary files with parser combinators... and the whole functioning of parser combinators in general.

The main point is that parser combinators work not on data, but on codata. So there.

[identity profile] antilamer.livejournal.com 2011-01-30 05:38 pm (UTC)(link)
Have you considered iteratees?

[identity profile] ivan-gandhi.livejournal.com 2011-01-30 05:50 pm (UTC)(link)
Interesting idea. No, I have not, but have to think about it.

[identity profile] antilamer.livejournal.com 2011-01-30 05:52 pm (UTC)(link)
Well, they're exactly what you're talking about :) Look at attoparsec and at attoparsec-iteratee. There's also maybe a dozen other iteratee-related packages on hackage.

[identity profile] antilamer.livejournal.com 2011-01-30 05:53 pm (UTC)(link)
Oops, I misunderstood your post. Oh well, iteratees are interesting anyway..

[identity profile] thedeemon.livejournal.com 2011-01-31 07:46 am (UTC)(link)
When you're saying it is codata, are you really saying anything more than "it's an abstract data type"?

[identity profile] ivan-gandhi.livejournal.com 2011-01-31 08:04 am (UTC)(link)
I don't know what is "abstract data type".

What I want to say is this: data are algebras, codata are coalgebras, over a certain functor (aka constructor).

[identity profile] thedeemon.livejournal.com 2011-01-31 11:12 am (UTC)(link)
ADT hides its internal structure and is accessible by certain defined operations with it. Very close to coalgebra, as I understand.

[identity profile] ivan-gandhi.livejournal.com 2011-01-31 12:18 pm (UTC)(link)
Except that, with such a vague definition, algebras will almost fit as well. But strictly speaking, yes, it is a coalgebra.