Lazy Evaluation vs Macros

Estou acostumado a uma avaliação lenta do Haskell e me vejo irritado com idiomas ansiosos por padrão agora que usei a avaliação lenta normalmente. Na verdade, isso é bastante prejudicial, pois os outros idiomas que eu uso tornam a avaliação preguiçosa de coisas muito embaraçosas, normalmente envolvendo a implantação de cus, tom iteradores e assim por diante. Então, apenas adquirindo algum conhecimento, eu realmente me fizMeno produtivo em meus idiomas originais. Suspiro

Mas ouvi dizer que as macros AST oferecem outra maneira limpa de fazer a mesma coisa. Eu sempre ouvi declarações como 'A avaliação preguiçosa torna as macros redundantes' e vice-versa, principalmente por estimular as comunidades Lisp e Haskel

Eu brinquei com macros em várias variantes do Lisp. Eles pareciam uma maneira realmente organizada de copiar e colar pedaços de código para serem manipulados em tempo de compilação. Certamente não eram o Santo Graal que Lispers gosta de pensar que é. Mas isso é quase certo porque não posso usá-los adequadamente. Obviamente, fazer com que o sistema macro funcione na mesma estrutura de dados principal com a qual a linguagem é montada é realmente útil, mas ainda é basicamente uma maneira organizada de copiar e colar códigos. Eu reconheço que basear um sistema de macro no mesmo AST da linguagem que permite a alteração completa do tempo de execução é poderos

O que eu quero saber é: como as macros podem ser usadas para fazer concisa e sucintamente o que a avaliação preguiçosa faz? Se eu quiser processar um arquivo linha por linha sem gastar muito, basta retornar uma lista que possui uma rotina de leitura de linha mapeada sobre ele. É o exemplo perfeito de DWIM (faça o que eu quero dizer). Nem preciso pensar nisso.

Eu claramente não entendo macros. Eu os usei e não fiquei particularmente impressionado com o hype. Então, falta algo que não estou lendo lendo a documentação online. Alguém pode me explicar tudo isso?

questionAnswers(5)

yourAnswerToTheQuestion