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].
--------------------------------------------------------------------

Reply via email to