[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: macros vs. blocks
On Friday, November 22, 2002, at 02:11 PM, Christopher Barber wrote:
>> I would refine my macros-are-useless claim a bit: languages that
>> have syntax for things such as assignment, variable declaration, and
>> quoted data (Python, Perl, Smalltalk, ...) don't benefit much from
> Well, the Curl language has syntax for those things, and yet we still
> the ability to extend the syntax using macros quite useful. I
> use them most frequently in automated tests to construct concise test
> that would otherwise require a lot of cutting and pasting or tedious
>>> (define-syntax assert
>>> (syntax-rules ()
>>> ((assert test)
>>> (if (not test) (assert-error (quote test))))))
>> The assert family is certainly a classic macro application, although
>> having it print something like
>> ASSERTION FAILURE: (> x 0).
>> is pretty darn useless, since there might be lots of occurrences of
>> (assert (> x 0)) in the code, and also that assertion failures often
>> indicate an error in the caller rather than where the assert statement
>> is. I'd much rather rely on the stack traceback with line numbers and
>> function arguments that any good interpreted language gives you. So I
>> claim this sort of pun is pretty useless.
> That is a quality of implementation issue. There is no reason that a
> system cannot allow you to write macros that refer to the source file
> line where the macro is expanded.
Indeed. cf. PLT scheme.