[Haskell-cafe] Parsers are monadic?
Dave Bayer
bayer at cpw.math.columbia.edu
Sat Jun 30 12:05:37 EDT 2007
On Jun 30, 2007, at 6:31 AM, Claus Reinke wrote:
> has anyone else had similar experiences with expressive limitations
> of monadic programming? things that one might be able to work
> around, but that don't feel as natural or simple as they should be?
> things that one hasn't been able to express at all (such as Swierstra
> & Duponcheel's static analysis of combinator parsers which
> inspired Hughes's proposal to use arrows)?
When you pretend you've never heard of monads or arrows, and write
down the types what do you get?
When I finally overcame my resistance to monads, I only had to change
names in my code to use the Maybe monad, the functions already had
the right type. There's an inevitability to monads and arrows, and
perhaps to what you're thinking, if it's a third species in a lazy
list we're evaluating of such things.
--
Haskell does suffer from misrepresentation to outsiders. Even already
familiar with ML and Ocaml, the "lazy, pure" approach read to me like
a fetish, and monads seemed a tainted construct for if one absolutely
must venture into the practical. The only reason I could see to learn
Haskell was a sense that nevertheless comes through and probably puts
some people off, that Haskell programmers are in the highest reading
group. (Lisp programmers imagine that they are; one should learn
both.) If one must suffer through the drudgery of using a
programming language, shouldn't it be a window to enlightenment that
Aldous Huxley would admire? Haskell delivers, but I avoided monads to
get the "pure" experience, when in fact Haskell is all about
supporting functional idioms like monads.
The references cited in this thread are excellent. They certainly
gave me more insight into the history of how Haskell evolved: Classes
coming from Gofer precisely to make monads more elegant to use, and
do notation a mutant form of monad comprehensions.
I went chasing references but couldn't substantiate this statement on
page 11 of
1996 Hutton, Meijer - Monadic parser combinators
http://haskell.readscheme.org/servlets/cite.ss?pattern=hutton-
parsers1996
> Indeed, the algebraic properties required of the monad operations
> turn out to be precisely
> those required for the notation to make sense.
How do I reconcile this with the extension of do notation to support
arrows?
If monads and arrows are two instances of something akin to "group
theory" then the definition of a "group" is lurking within whatever
this quote should have said...
More information about the Haskell-Cafe
mailing list