Я пытаюсь сделать проект, который включает CLISP.У меня нет никаких знаний о CLISP, и я новичок в этом языке.
Ниже приведен код, который уже указан:
#|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; POLYMORPHISM
TODO 2a. Define an object "cirle" with variables x,y
(for the center of the circle) and radius
(to hold the size of the circle). Add a method
"area" that returns 2 *pi*radius^2
; run this to peek inside circle
'(xpand (circle))
TODO 2b. Define an object "rectangle" with variables x1,x2,y1,y2
that all default value of 0. Add
a method "area" that returns the area of that rectangle
TODO 2c. Show the output from the following test
|#
(defun polymorphism()
(let ((sum 0)
(all (list (circle :radius 1)
(rectangle :x2 10 :y2 10)
(circle :radius 2))))
(dolist (one all)
(incf sum (send one 'area)))
(print `(polymorphism ,sum))))
; to run, uncomment the following
'(polymorphism)
#|
Я должен создать объект для круга и прямоугольника, который имеет атрибуты и метод.
Для круга это то, что я уже пробовал:
(defthing
circle
:has ((x 0) (y 0) (radius 0))
:does ((area (radius)
(2 * (22/7) * radius))
))
Для прямоугольника это то, что я уже попробовал:
(defthing
rectangle
:has ((x1 0) (y1 0) (x2 0) (y2 0))
:does ((area
((x1-x2) * (y1-y2) * radius))
))
Этовсе, что мне нужно, или мне нужно что-нибудь добавить, чтобы методы круга и прямоугольника работали?