OOP mit Lisp
-
möglich?
-
Ja.
-
Ich bin nicht <cool>
Wie geht das in lisp?
-
google mal nach "oop in lisp" .. tausend beiträge dazu
-
Hängt von der Definition von OOP ab. Ich demonstrier mal, wie man eine Klasse definiert, vererbt, und polymorph benutzt.
;; CLOS Code (defclass animal ()) (defclass dog (animal)) (defclass cat (animal)) ;; optional: (defgeneric make-sound (animal)) (defmethod make-sound ((animal dog)) (print "bark bark")) (defmethod make-sound ((animal cat)) (print "meow meow")) ... (let ((animal (make-instance 'dog))) (make-sound animal)) ;; => "bark bark"
Man beachte dass die Basisklasse animal überflüssig ist, aber ich wollte Vererbung demonstrieren. Slots (Attribute) hab ich auch weggelassen.
-
Schade, dass ich kein Lisp kann. Aber das Beispiel schaut nett aus und ich versteh es auch
-
@Bashar: Ist das einer deiner Gründe für Common Lisp? (Nehm schon an)
-
Original erstellt von Mr. N:
Ist das einer deiner Gründe für Common Lisp?Faustregel: Jeder Scheme-Programmierer hat mindestens ein Objekt-System von Hand geschrieben ...
-
Original erstellt von Daniel E.:
Faustregel: Jeder Scheme-Programmierer hat mindestens ein Objekt-System von Hand geschrieben ...Außer er ist ein Scheme Nube, so wie ich :D.
-
Mr N: Hm ... so schlecht find ich CLOS nicht Aber man muß es nicht benutzen.