[cells-devel] DEF-C-OUTPUT and hello-world.lisp headscratcher
Tayssir John Gabbour
tjg-lisp at pentaside.org
Sun Mar 12 08:55:36 UTC 2006
Nevermind, it was answered on usenet. ;)
Tayssir
Tayssir John Gabbour wrote:
> Hi all,
>
> In cells-test/hello-world.lisp, when running DEF-C-OUTPUT, old-value
> seems always bound to nil. My understanding is it should be bound to the
> previous thing the slot was set to. Am I missing something?
>
> Sourcecode and repl output below (on SBCL PPC Darwin 0.9.9):
>
>
>
> (use-package :cells)
> (use-package :utils-kt)
>
> (defmodel computer ()
> ((happen :cell :ephemeral :initform (c-in nil) :accessor happen)
> (location :cell t
> :initform (c? (case (^happen)
> (:leave :away)
> (:arrive :at-home)
> (t .cache))) ;; ie, unchanged
> :accessor location)
> (response :cell :ephemeral :initform nil :initarg :response :accessor
> response)))
>
> (flet ((fmt (name new-value old-value-boundp old-value)
> (format t "~%~A: ~15A (previously ~:[an unbound ~A~;~A~])"
> name new-value old-value-boundp old-value)))
> (def-c-output response (self new-value old-value old-value-boundp)
> (fmt "response" new-value old-value-boundp old-value))
> (def-c-output happen (self new-value old-value old-value-boundp)
> (fmt "happen " new-value old-value-boundp old-value))
> (def-c-output location (self new-value old-value old-value-boundp)
> (fmt "location" new-value old-value-boundp old-value)))
>
>
> (defun hello-world ()
> (let ((dell
> (make-be 'computer
> :response (c? (bwhen (h (happen self))
> (if (eql (^location) :at-home)
> (case h
> (:knock-knock "who's there?")
> (:world "hello, world."))
> "<silence>"))))))
> (dotimes (n 2)
> (setf (happen dell) :knock-knock))
>
> (setf (happen dell) :arrive)
> (setf (happen dell) :knock-knock)
> (setf (happen dell) :world)
> (values)))
>
>
>
> ;; At the repl:
>
>
> CL-USER> (hello-world)
>
> ----
> ;;; instancing object...
> happen : NIL (previously an unbound NIL)
> location: NIL (previously NIL)
> response: NIL (previously NIL)
> ;;; instanced object #<COMPUTER {10F59309}>
> ----
> happen : KNOCK-KNOCK (previously NIL)
> response: <silence> (previously NIL)
> happen : KNOCK-KNOCK (previously NIL)
> response: <silence> (previously NIL)
> happen : ARRIVE (previously NIL)
> location: AT-HOME (previously NIL)
> happen : KNOCK-KNOCK (previously NIL)
> response: who's there? (previously NIL)
> happen : WORLD (previously NIL)
> response: hello, world. (previously NIL)
>
>
>
> Thanks,
> Tayssir
> _______________________________________________
> cells-devel site list
> cells-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/cells-devel
>
More information about the cells-devel
mailing list