[cells-devel] TripleCells: A new twist to the unbound variable CACHE challenge ...

Kenneth Tilton kentilton at gmail.com
Thu Mar 22 17:20:50 UTC 2012


On 3/21/2012 3:44 PM, Frank Goenninger wrote:
>>> Von: Kenneth Tilton<kentilton at gmail.com>
>>> Datum: 21. März 2012 14:57:23 MEZ
>>> An: Frank Goenninger<frgo at me.com>
>>> Betreff: Re: [cells-devel] Triple Cells: AllegroGraph 4.5 "porting"
>>>
>>> Sorry, we went so late last night I completely forgot about this. I'll keep trying to find time (and keep sending me emails so I remember to). I will try to dig thru the below.
>>>
>>> Do I gather there is a new error now about CACHE? I do not even recognize that.
> After a full recompile I get another error:
> Error: Attempt to take the value of the unbound variable `CACHE'.
>
> Note: Not cache? but cache ...
>
> Digging into the 3c code reveals:
>
> The cell rule gets stored as a string. This is done in #'3c? :
>
> (defmacro 3c? (rule&key test ephemeral observer)
>    `(call-3c? '(lambda (node cache cache?)  ;;<<<<<<<<------ This is the "offending" LoC ...
>                  (declare (ignorable cache cache?))
>                  (let ((*calc-nodes* (cons node *calc-nodes*)))
>                    ,rule))   ;;<<<<<<<<<------ There cache is not defined anymore - see below for explanation ...
>       :test ,test
>       :observer ,observer
>       :ephemeral ,ephemeral))
>
> When running #'test-prep I get the following last lines in a trace:
>
> 0>   3c?-rule: got rule "(lambda (triple-cells::node triple-cells::cache triple-cells::cache?)
>    (declare (ignorable triple-cells::cache triple-cells::cache?))
>    (let ((triple-cells::*calc-nodes*
>           (cons triple-cells::node triple-cells::*calc-nodes*)))
>      (let ((h (3c (3c-find-id \"dell\") !hw:happen)))
>        (trc \"rule sees happen\" h)
>        (cond ((string-equal h \"arrive\") \"home\")
>              ((string-equal h \"leave\") \"away\")
>              (triple-cells::cache? cache)
>              (t \"away\")))))"
>
> I can't see what is wrong with this...

cache needs the explicit package as well:

(cond ((string-equal h \"arrive\") \"home\")
             ((string-equal h \"leave\") \"away\")
             (triple-cells::cache? triple-cells::cache) ;;<-- need package on both
             (t \"away\")))))"


HTH, ken




More information about the cells-devel mailing list