[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