** field
*** Definizione
-
*** Implementazione
#+begin_src lisp :tangle ool.lisp
+(defun field (instance field-name)
+ (field-helper (getf instance :fields) field-name))
+
+(defun field-helper (fields field-name)
+ (cond ((null fields) nil)
+ ((eq (caar fields) field-name) (cadar fields))
+ (T (field-helper (cdr fields) field-name))))
#+end_src
*** Esempio pratico
*** Implementazione
#+begin_src lisp :tangle ool.lisp
+(defun field* (instance fields)
+ (cond ((null fields) nil)
+ ((null (cdr fields)) (field instance (car fields)))
+ ((null (field instance (car fields))) nil)
+ (T (field* instance (cdr fields)))))
#+end_src
*** Esempio pratico
(create-instance instance fields))
(copy-list (class-spec classname))))
+(defun field (instance field-name)
+ (field-helper (getf instance :fields) field-name))
+(defun field-helper (fields field-name)
+ (cond ((null fields) nil)
+ ((eq (caar fields) field-name) (cadar fields))
+ (T (field-helper (cdr fields) field-name))))
-
+(defun field* (instance fields)
+ (cond ((null fields) nil)
+ ((null (cdr fields)) (field instance (car fields)))
+ ((null (field instance (car fields))) nil)
+ (T (field* instance (cdr fields)))))
(defparameter *classes-specs* (make-hash-table))