Я думаю, что понимаю макросы Lisp и их роль на этапе компиляции.
Но в Python вы можете передать функцию в другую функцию
def f(filename, g):
try:
fh = open(filename, "rb")
g(fh)
finally:
close(fh)
Итак, мы получаем ленивую оценку здесь. Что делать с макросами, а не с функциями в качестве объектов первого класса?