Je suis habitué à l'évaluation différée de Haskell, et je me retrouve à obtenir irritée avec hâte par défaut langues maintenant que j'ai utilisé l'évaluation différée correctement. C'est tout à fait dommageable, comme les autres langues que j'utilise principalement faire de la paresseusement l'évaluation des trucs très bizarre, normalement impliquant le déploiement de la coutume des itérateurs et ainsi de suite. Donc, juste par l'acquisition de certaines connaissances, en fait, j'ai fait moi-même de moins en moins productifs dans ma langue d'origine. Soupir.
Mais j'ai entendu dire que AST macros offrent un autre moyen propre de faire la même chose. J'ai souvent entendu des déclarations comme " Paresseux évaluation des macros redondant et vice-versa, la plupart de sparring Haskell, Lisp et les communautés.
J'ai flirté avec les macros dans les différents Lisp variantes. Ils semblaient vraiment comme un manière organisée de copier et coller les morceaux de code autour de à être traités au moment de la compilation. Ils n'étaient certainement pas le saint graal que Lispers aime à penser qu'il est. Mais c'est presque certainement parce que je ne peux pas les utiliser correctement. Bien sûr, avoir le macro système fonctionne sur la même base de données de la structure de la langue elle-même est assemblé avec est vraiment utile, mais c'est encore essentiellement une manière organisée de faire un copier-coller du code autour. Je reconnais que baser un système de macro sur le même AST comme la langue qui permet la pleine exécution de l'altération est puissant.
Ce que je voudrais savoir, c'est comment les macros être utilisé de manière concise et succincte faire ce paresseux-évaluation n'? Si je veux traiter un fichier ligne par ligne, sans aspirer la totalité de la chose, je viens de retourner une liste qui avait une ligne de routine de lecture mappé sur elle. C'est l'exemple parfait de la DWIM (faire ce que je veux dire). Je n'ai même pas à y penser.
De toute évidence, je ne reçois pas les macros. Je l'ai utilisé et n'a pas été particulièrement impressionné étant donné le battage médiatique. Donc, il y a quelque chose qui me manque, que je ne suis pas en lisant la documentation en ligne. Quelqu'un peut-il expliquer tout cela à moi?