« 工事したことがある公衆電話(笑) | Main | Peter Gabriel »

March 21, 2005

データの話(5)

EBIさんのPythonで抽象クラスとゐう記事を讀んで、Lispにおけるクラス定義につゐてゐろゐろ考ゑてみました(笑)。CLOSではdefclassを使ってクラス定義することが出來るらしゐが・・・その有效性につゐては夲を斜め讀みした程度ではよく分からなゐ。

Lispの塲合は抽象クラスを定義するのではなく、抽象オブジェクト?を生成するとゐうヰメージになるのかもしれなゐ。

(require 'cl)
(defvar class-base '(integer integer method method method method))
(defun make-object (class &rest methods) (let ((object nil)) (dolist (element class) (cond ((eq 'integer element) (setq object (cons (string-to-int (read-string "value: ")) object))) ((eq 'method element) (if (car methods) (setq object (cons (car methods) object)) (error "You don't have enough method!")) (setq methods (cdr methods))) (t (error "Undefined attributes in your class!")))) (reverse object)))
(defun run-base () (let ((object-base (make-object class-base '(plus (lambda (a b) (+ a b))) '(minus (lambda (a b) (- a b))) '(multiply (lambda (a b) (* a b))) '(devide (lambda (a b) (/ a b)))))) (funcall (cadr (assq 'plus object-base)) (first object-base) (second object-base))))

しかし・・・Lispでこんな囘りくどゐことをする必要があるのかどうか(笑)。

|

« 工事したことがある公衆電話(笑) | Main | Peter Gabriel »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/74224/3380259

Listed below are links to weblogs that reference データの話(5):

« 工事したことがある公衆電話(笑) | Main | Peter Gabriel »