2009-01-12 7 views
6

im Lesen Praktischer Common Lisp als Ergebnis von another question.Versuchen zu lernen: Object Reorientierung und generische Funktionen in LISP!

Ich lese gerade Kapitel 16 und 17, wo Sie finden können, wie LISP Objekte verwaltet. Aber nachdem ich ein paar Jahre darüber nachgedacht habe, wie Java Objekte verwaltet, kann ich nicht wirklich verstehen, wie man größere Architekturen in LISP mit dem CLOS implementiert.

Also ich frage euch für einige 20-50 Seiten lesen über CLOS auf größere Architekturen als einfache Beispiele angewendet. Vielleicht ein paar Blogpost oder sogar Erfahrungen!

TY

+1

Können Sie ein Beispiel für eine Architektur geben? CLOS ist so ziemlich eine Obermenge des Java-Objektsystems, also bin ich mir nicht sicher, welche Architekturen Sie im Sinn haben ... – Jules

Antwort

4

Vielleicht einen Blick auf die Beispielanwendungen nehmen, die in den späteren Kapiteln ging durch sind. Sie werden sehen, dass Klassen und Objekte nur ein weiteres Werkzeug in Ihrer Box sind. Widerstehen Sie dem Drang, Java mit Lisp-Syntax zu programmieren.

Ein anderer Ort zu betrachten ist Successful Lisp, Kapitel 7 und 14 für die Grundlagen, und Kapitel 31 und ein Teil von 3.10 sind über Pakete und die Handhabung großer Projekte.

Irgendein Lisp-Guru (es könnte Paul Graham gewesen sein, aber ich bin mir nicht sicher) sagte einmal, dass er noch CLOS überhaupt noch nicht gebraucht hat.

bearbeiten: Ich denke, dass Ihre Verwirrung von der Tatsache kommen kann, dass Sie in Lisp nicht das Klassensystem zum Organisieren von Namespaces verwenden. Dies wird separat durchgeführt. die beiden haben eigentlich nichts miteinander zu tun.

+0

Im Fall von pg ist es, weil er lieber seine eigene kaputte Version schreibt.Fast alles in der Lisp-Welt ist ein Objekt - CLOS ist ein gutes Werkzeug, um es zu wissen. – jrockway

+2

jrockway, hast du Pauls Quellcode gelesen? – Svante

+0

Tatsächlich definiert die Hyperspec "Objekt" als "beliebiges Lisp-Datum": http://www.lispworks.com/documentation/lw50/CLHS/Body/26_glo_o.htm – Ken

7

Wenn Sie sich das Buch "Objektorientierte Programmierung in COMMON LISP" von Sonja E. Keene besorgen möchten, enthält Kapitel 11 (Entwickeln eines erweiterten CLOS-Programms: Streams) ein nicht-triviales Beispiel mit Mehrfachvererbung über 40 Seiten.

Acht Klassen werden ausführlich besprochen (Stream, Eingangsstrom, Ausgangsstrom, bidirektionaler Strom, Zeichenstrom, Byte-Stream, Disk-Stream und Tape-Stream). Konkrete Klassen, von denen erwartet wird, dass ein Benutzer Instanzen von ihnen erstellt, werden dann unter Verwendung der Mehrfachvererbung abgeleitet.

Es ist wesentlicher als das Bankkonto Beispiel in praktischen Common Lisp. Vielleicht finden Sie auch den Rest von Keenes Buch nützlich, um ein tieferes Verständnis von CLOS zu erlangen: Das ganze Buch handelt von CLOS.

+0

Keenes Buch bietet genau das, was dieses OP sucht. –

+0

Sonya ist (war, sie hat sich im Ruhestand) einer der besten technischen Autoren aller Zeiten. Ihr Buch ist sehr klar und wurde von den Machern von CLOS sehr genau geprüft. –

5

Wenn Sie CLOS wirklich verstehen möchten, können Sie zurückgehen und The Art of the Meta Object Protocol lesen, die die Basis und den zugrunde liegenden Code für Closette, eine Unterversion von CLOS, bereitstellt.

+0

Dieses Buch ist fantastisch, aber es geht mehr um die zugrunde liegende Theorie und Schönheit von CLOS als um die praktische Arbeitstagesentwicklung. Ich denke, Letzteres ist mehr, worum hier gebeten wird. –

0

Bigger CLOS Anwendungen sind 1) CAPI von LispWorks 2) cl-http-Webserver 3) ein sehr großes CLOS Paket ist CLIM 4), wenn Sie wie OpenGenera (das ist ein Lisp OS mit Common Lisp und einige Vorgänger ZetaLisp 5) ein kleineres Paket ist http://www.cliki.net/mel-base

Grüße Friedrich

2

Wir bei Weblocks auch die CLOS stark nutzen, so dass Sie die Quelle ein wenig durchsuchen möchten.

Verwandte Themen