Mein Verständnis einer Struktur ist, dass es Steckplätze zum Speichern von Daten hat, hat einen Typ, make-X
und Slot-Accessor-Funktionen, und kann durch eine Methode spezialisiert werden (da es eine Art).Unterschied zwischen Struktur und Klasse in Common Lisp
Mein Verständnis einer Klasse ist, dass es die gleiche und mehrfache Vererbung hat. Die oberste Antwort auf this question besagt, dass Strukturen einzelne Vererbung haben können, und dass Anfangsimplementierungen von CLOS "viel langsamer" als Strukturen waren.
Basierend auf wie Leute über CLOS und Strukturen sprechen, nehme ich an, dass es einige andere Unterschiede geben muss, aber meine trivialen Google-Suchen waren fruchtlos. Also frage ich: Was sind die praktischen Unterschiede zwischen CLOS und Strukturen?
Aus Neugier, wie überprüft man, ob eine Implementierung CLOS für (zum Beispiel) Streams verwendet? – Reepca
@Reepca: Wenn ein Typ ein Subtyp von 'Standard-Objekt' ist, dann ist es eine CLOS-Klasse. Für eine Konditionsart: '(Subtyp 'Fehler' Standard-Objekt)' -> T oder NIL. Einige Implementierungen können zum Beispiel verschiedene CLOS- und Nicht-CLOS-Typen von Strömen erlauben. –
Könnten Sie näher erläutern, wie sich das Ändern von Klassen zur Laufzeit eignet? Ich kann nicht an andere Sprachen denken, die das wirklich haben, also habe ich nie in diesen Begriffen gedacht. – MasterMastic