Hi Richard,
(retract foo) gives a ClassCastException because "foo" is a symbol,
not a fact. Similarly, (retract (foo)) gives an "Unimplemented
function foo." Both of these are coding errors, and exceptions are
how Jess reports them.
The following code
Jess> (clear)
TRUE
Jess> (bind ?f (new jess.Fact foo (engine)))
<External-Address:jess.Fact>
Jess> (retract ?f)
TRUE
shows that retracting an unasserted fact does, indeed, fail
silently. Alternatively, there's "retract-string," which behaves the
same way, except that the argument is a string which gets parsed into
a fact:
Jess> (retract-string "(foo)")
TRUE
I think Richard Kasperowski wrote:
> If fact foo hasn't been asserted yet, then (retract foo) bars with
> ClassCastException. Sure, retracted something that hasn't been asserted
> is bad behavior on my part, but shouldn't retract behave better, too?
> Is ClassCastException the expected behavior, or should it silently fail
> instead?
---------------------------------------------------------
Ernest Friedman-Hill
Distributed Systems Research Phone: (925) 294-2154
Sandia National Labs FAX: (925) 294-2234
PO Box 969, MS 9012 [EMAIL PROTECTED]
Livermore, CA 94550 http://herzberg.ca.sandia.gov
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------