[Haskell-cafe] some ideas for Haskell', from Python
Lennart Augustsson
lennart at augustsson.net
Wed Jan 14 18:47:02 EST 2009
With macros you can define new variable binding constructs.
That's something I occasionally miss in Haskell.
-- Lennart
On Wed, Jan 14, 2009 at 6:48 PM, Jonathan Cast
<jonathanccast at fastmail.fm> wrote:
> 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
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list