[Haskell-cafe] some ideas for Haskell', from Python
Jonathan Cast
jonathanccast at fastmail.fm
Wed Jan 14 13:48:28 EST 2009
On Wed, 2009-01-14 at 12:39 -0600, Tim Wawrzynczak wrote:
> You're probably right.
> I've played around with LISP macros a little, but it seems
> that most
> of the cases where you would use a macro in LISP you don't
> need one in
> haskell due to lazy evaluation. Although I haven't played
> around with
> them enough to say much one way or another.
>
> Do you know of a particular example where a macro would be a
> big help
> in haskell?
>
> Well, like many good programming tools, Lisp macros are another
> abstraction, but instead of dealing with data, they deal with code.
Haskell already has a couple of abstraction tools for dealing with code.
One is called `first-class functions'; another is called `lazy
evaluation'.
> They are a syntactic abstraction.
What is this good for? I suspect most Lisp macros are parametric in
form, rather than really syntactic; I know that every example of a Lisp
macro I've seen is parametric in form. Parametric macros --- macros
that don't deconstruct their arguments --- don't usually need to be
macros at all in modern functional languages. Do you have an example of
a macro that can't be replaced by higher-order functions and laziness?
> They're often described as "programs that write programs."
So are code generators. The most common example of a code generator is
probably YACC --- but Parsec replaces it, with better readability even,
with first-class parsers (built atop first-class functions).
jcc
More information about the Haskell-Cafe
mailing list