Hi Mirko, Am 17.04.2012 um 20:17 schrieb Mirko Vukovic:
> Hello, > > I am doing very basic cell-stuff, much like the ones in the doc folder: Not > liking excel and its cousins, I am implementing spread-sheet like > calculations in cells. > > My question: > > 1) Can I build two models (model1, model2) and specify that a slot in model2 > depends on changes in some other slot in model1? Sure: (in-package #:cells) ;;; ------------------ ;;; *** Model M1 *** ;;; ------------------ (defmd m1 () a b :a (c-in 1) :b (c-in 1)) (defobserver a ((self m1)) (when new-value (format *debug-io* "~%~S: New value for slot a => ~S." self (a self)))) (defobserver b ((self m1)) (when new-value (format *debug-io* "~%~S: New value for slot b => ~S." self (b self)))) (defmacro mk-m1 (id) `(make-instance 'm1 :fm-parent *parent* :md-name ,id)) ;;; ------------------ ;;; *** Model M2 *** ;;; ------------------ (defmd m2 () (c (c? (let ((m1 (fm^ :m1))) ;; -> fm^ searches for :m1 in the current family (* (a m1) (b m1)))))) (defmacro mk-m2 (id) `(make-instance 'm2 :fm-parent *parent* :md-name ,id)) (defobserver c ((self m2)) (when new-value (format *debug-io* "~%~S: New value for slot c => ~S." self (c self)))) ;;; ------------------ ;;; *** Family M *** ;;; ------------------ (defmd m (family) (kids (c? (the-kids (mk-m1 :m1) (mk-m2 :m2)))) ;; :m1 and :m2 are kids of :m's family. :md-name :m) ;;; ----------------- ;;; *** TESTING *** ;;; ----------------- (defun m-test () (let* ((self (make-instance 'm)) (m1 (fm-find-kid self :m1))) ;; Step 1 (format *debug-io* "~%~%STEP 1~&") (setf (a m1) 2) ;; => C = 2 ;; See observer for C ! ;; Step 2 (format *debug-io* "~%~%STEP 2 ~&") (setf (b m1) 3)) ;; => C = 6 ;; See observer for C ! (values)) > 2) Related: can I change a slot specification in a model. For example from > `c-in' to `c?'. I assume that I can, but I would have to re-initialize the > model somehow. Correct? This one I'd like to leave for Kenny to answer ... Never did that during one run - I always reset cells via #'cells-reset and the started over when I needed to do that. > I am also very interested in the question posted just a few minutes ago. I > would like to build an automated way of generating a GUI front end my cell > models. I tried to answer this in the other mail. > > Thanks, > > Mirko Hope that helps. Cheers Frank _______________________________________________ cells-devel site list cells-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/cells-devel