22 Stimmen

Was ist die idiomatische Entsprechung von C structs in Lisp?

In Sprachen des Typs C wird von Anfang an und in jedem Einführungsbuch ein starker Schwerpunkt auf Strukturen/Rekorde und Objekte gelegt. Ihre kompletten Systeme sind dann auf die Verwaltung solcher Strukturen, ihre gegenseitigen Beziehungen und die Vererbung ausgelegt.

In der Lisp-Dokumentation findet man in der Regel 1-2 Seiten darüber, dass Lisp "auch" ein Defstrukt hat, ein einfaches Beispiel, und das war's dann auch schon. Auch die Verschachtelung von Strukturen wird überhaupt nicht erwähnt.

Für jemanden, der von einem C-Hintergrund kommt, scheint es zunächst, dass die hierarchische Organisation verschiedener Datentypen nicht die bevorzugte Methode in Lisp ist, aber abgesehen von CLOS, das ein vollwertiges Objektsystem ist und zu kompliziert, wenn Sie nur Strukturen wollen, und abgesehen von der Einpferchung alles in Listen, gibt es keinen offensichtlichen Weg, um Ihre C Struktur Wissen zu übertragen.

Welches ist die idiomatische Lisp-Methode zur hierarchischen Organisation von Daten, die den C-Strukturen am ähnlichsten ist?

--

Ich denke, die zusammenfassende Antwort auf meine Frage würde lauten: Für das Erlernen von Anfängern können defstruct und/oder plists verwendet werden, obwohl sie "Legacy Features" sind, da sie C structs am ähnlichsten sind, aber sie wurden größtenteils durch das flexiblere defclass/CLOS abgelöst, was die meisten Lisp-Programme heute verwenden.

Dies war meine erste Frage auf SO, also danke an alle, die sich die Zeit genommen haben, sie zu beantworten.

0voto

onemasse Punkte 6258

Warum nicht Hash-Tabellen verwenden? Jedes Mitglied der Struktur kann ein Schlüssel in einer Hash-Tabelle sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X