Stackless & String-processing
Greg Ewing
greg.ewing at compaq.com
Thu Jul 22 18:58:10 EDT 1999
More information about the Python-list mailing list
Thu Jul 22 18:58:10 EDT 1999
- Previous message (by thread): Maintainability (was Re: Stackless & String-processing)
- Next message (by thread): Stackless & String-processing
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Tim Peters wrote: > > In a way deeper than it is in a functional program not using monads? IOW, > is the clarity of "control flow" due to monads specifically or just to > functional semantics in general? Monads are really only a big deal in the context of functional languages, where there is no such thing as control flow. Monads provide an astoundingly elegant way of writing what is effectively procedural code in a functional language. If you've ever used one of the pre-monad systems for doing I/O in a functional language, you'll appreciate what a massive achievement this is. However, Python is already a procedural language, so there's no need to use monads there to fake procedural code. It would be as pointless as putting training wheels on a tricycle. With regard to parser combinators, there are various things at work in the functional language context that don't apply to Python. Using monads and parser combinators in a functional language, you can write parsers that look very much like a BNF grammar or whatever your favourite notation is -- *without* needing any special tool to compile and execute them. This is largely due to the general sparseness of the syntax, and the ability to define new infix operators, neither of which apply to Python. You can't translate the code into Python without losing most of the notational convenience which accounts for a large part of the technique's attractiveness. The idea of composing parsing functions can still be useful, however. For instance you might have a function with the signature def p_separated_list(p_item, p_separator): where p_item and p_separator are parsers for list items and separator tokens. Which incidentally could be an answer to > What I haven't seen is an example of something clearly useful > (wrt parsing specifically) *beyond* those. Note that the implementation of p_separated_list need not be quite the standard version you might find in a library. In a parser for Python code, for example, it would take care of that quirky comma-at- the-end-of-a-sequence thing. > I will give parser combinators a try; they do sound interesting to me. More > interesting would be to hear about that "new programming language"! If you're interested in examples of monad use for parsing and compiling, I had a fit of insanity last year in which I implemented a compiler in Hugs using monads for several different things, including parsing. If you'd like to see it, I could dig it out and put it on a web page somewhere. Greg
- Previous message (by thread): Maintainability (was Re: Stackless & String-processing)
- Next message (by thread): Stackless & String-processing
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list