Wie schreibe ich ein Macro definierendes Makro in Lisp

8

Ich habe ungefähr zwei Makros (und Klettern) in meiner Codebasis, die so aussehen:

%Vor%

und das:

%Vor%

Jedes der Makros hat die folgende Aufrufsyntax: (def-stat-method ranged-weapon :ranged-weapon)

Ich möchte ein Makro (def-foo-method macro-name method) , das in die entsprechenden Makros expandiert, so dass (def-foo-method def-stat-method stats) in das erste obige Beispiel expandiert. Ich bin ein lispeln Neuling und weiß nicht wirklich, wie man das macht. Alle Hilfe geschätzt.

    
krzysz00 25.06.2010, 20:14
quelle

2 Antworten

11

Schreiben Sie einfach ein Makro, das in ein anderes defmacro expandiert:

%Vor%

Ich denke, es könnte einen Weg geben, dies ohne let zu tun, aber verschachtelte Backticks sind verwirrend:)

    
wdebeaum 25.06.2010, 20:46
quelle
1

Für mich sieht dieser Code langsam aus. Ein objektorientierter Runtime-Versand plus Suche in einer Property-Liste? Warum?

Manchmal werden Eigenschaftenlisten zu CLOS-Objekten hinzugefügt, um Speicherplatz für nicht häufig verwendete Slots bereitzustellen oder sie leicht erweiterbar zu machen (wobei alle Arten von Eigenschaften hinzugefügt werden können, ohne sie alle zu kennen, bevor das Programm ausgeführt wird). Im Allgemeinen ist es möglicherweise besser, die Eigenschaften zu echten Slots des Objekts zu machen.

    
Rainer Joswig 26.06.2010 09:43
quelle

Tags und Links