(class +Point) # x y (dm T (X Y) (=: x (or X 0)) (=: y (or Y 0)) ) (dm print> () (prinl "Point " (: x) "," (: y)) ) (class +Circle +Point) # r (dm T (X Y R) (super X Y) (=: r (or R 0)) ) (dm print> () (prinl "Circle " (: x) "," (: y) "," (: r)) ) (setq P (new '(+Point) 3 4) C (new '(+Circle) 10 10 5) ) (print> P) (print> C) (out "objects.dat" (pr (val P) (getl P)) (pr (val C) (getl C)) )