On Jun 8, 2009, at 9:18 PM, Brian Rogosky wrote:
Hello,
As part of testing the problem from my previous posting, I noticed a
strange duplication of facts when trying to create a fact with a
slot of FLOAT type. In one case I am specifying a decimal and the
other a whole number, but the number is otherwise the same. I would
think only one fact would be created, but instead two are created
but with different float representations. The values are equal
according to the = operator; however the eq operator returns false.
The whole number is an RU.INTEGER, and the float is an RU.FLOAT.
Comparing with = returns true because they have the same value, but eq
returns false because they're different data types.
Variables and slots are untyped in Jess; only values have types. The
"type" slot qualifier is included only for backwards compatibility
with CLIPS; in Jess, as in CLIPS, it doesn't actually prevent a value
of another type from being added to the slot. It's more for
documentation than anything else. It's definitely not like a variable
declaration in Java.
Is this behavior to be expected and intended by design?
Yes.
I would think the slot with type Float would automatically convert
all raw values to float and so only create one fact in the example
below.
Nope. 1 and 1.0 are two different values. When it matters, use "=" for
comparison.
---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences Phone: (925) 294-2154
Sandia National Labs
PO Box 969, MS 9012 [email protected]
Livermore, CA 94550 http://www.jessrules.com
--------------------------------------------------------------------
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].
--------------------------------------------------------------------