Gödel, Escher, Elisp: Die Schönheit von Makros

Gödel, Escher, Elisp: The Beauty of Macros

Gödel, Escher, Elisp: Die Schönheit von Makros

In Emacs Lisp ist Code Daten – und Daten sind Code. Dieser Artikel erklärt, was homoikonisch bedeutet, und zeigt, wie Makros diese Dualität ausnutzen, um die Sprache zu erweitern. Von `unless` bis `defun` sind Makros allgegenwärtig, und mit Werkzeugen wie `macroexpand` und macrostep kann man ihre Magie durchschauen. Eine Reise durch Hofstadters seltsame Schleifen und Eschers Grafiken veranschaulicht die Schönheit dieses Konzepts.

Makros sind kleine Programme, die andere Programme schreiben, und sie erweitern, was die Sprache ausdrücken kann.
  1. meken

    > Um eine häufige Frage vorwegzunehmen: Warum könnte my-unless keine Funktion sein? Funktionsargumente werden eifrig ausgewertet, bevor die Funktion sie überhaupt zu sehen bekommt.

    Interessant, wenn man also eine träge Sprache verwendet, braucht man hier kein Makro und könnte my-unless als Funktion schreiben.

  2. kimi

    Denke an die goldene Regel für Lisp-Makros: Schreib kein Makro.

  3. anthk

    The Computational Beauty of Nature ist ähnlich und enthält den Code des Buches:

    https://github.com/gwf/CBofN

    Einige Tools könnten X unter CWM für OpenBSD zum Absturz bringen; wechsle zu FVWM oder verwende ein Werkzeug wie mimalloc.

    In "On Lisp" baut das Buch im Grunde genommen ganze Zahlen auf der Basis von Cons-Zellen auf, ähnlich wie die Peano-Axiome.

Mehr von diesem Tag

2026-08-14