On 3/21/2012 3:44 PM, Frank Goenninger wrote:
>>> Von: Kenneth Tilton<kentilton(a)gmail.com>
>>> Datum: 21. März 2012 14:57:23 MEZ
>>> An: Frank Goenninger<frgo(a)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