# Which Logical Difference?

**Page 2 of 2**

Quote from Paul Vernon on December 2, 2021, 2:45 pmQuote from Darren Duncan on December 1, 2021, 10:47 pmIntegers are about the simplest numerical concept there is,

Well, the natural counting numbers (1,2,3 etc) are certainly simpler than the integers. It is notable that

[The] positive rational numbers were understood before negative numbers, at least by the Greeks

making integers their own disjoint thing, in databases, and selectively adding each additional layer of more general type out as far as you want (and users can define ones the system doesn't), is a much more elegant and logical solution.

I would say that yes, you can start with the integers, then add the rationals - but add them as a

superset(i.e. add the non-integer rationals to the integers to make the full set of rationals). In that way you don't need to change any existingvaluesif you want to leverage the new rational features. So you can take your existing integers and use them with the new fangled`DIVIDE()`

function that is a bit like your existing`GOESINTO()`

and`REMAINDER()`

functions that are closed on integers, but that for some integer inputs will return rational values.If integers are disjoint from rationals, then you have the choose up front which set do you want to use (or rely on some fuzzy system of coercion and multiple equals operators). That is less elegant and less logical.

Quote from Darren Duncan on December 1, 2021, 10:47 pmIntegers are about the simplest numerical concept there is,

Well, the natural counting numbers (1,2,3 etc) are certainly simpler than the integers. It is notable that

[The] positive rational numbers were understood before negative numbers, at least by the Greeks

making integers their own disjoint thing, in databases, and selectively adding each additional layer of more general type out as far as you want (and users can define ones the system doesn't), is a much more elegant and logical solution.

I would say that yes, you can start with the integers, then add the rationals - but add them as a **superset** (i.e. add the non-integer rationals to the integers to make the full set of rationals). In that way you don't need to change any existing **values** if you want to leverage the new rational features. So you can take your existing integers and use them with the new fangled `DIVIDE()`

function that is a bit like your existing `GOESINTO()`

and `REMAINDER()`

functions that are closed on integers, but that for some integer inputs will return rational values.

If integers are disjoint from rationals, then you have the choose up front which set do you want to use (or rely on some fuzzy system of coercion and multiple equals operators). That is less elegant and less logical.

Quote from Paul Vernon on December 2, 2021, 2:52 pmQuote from dandl on December 2, 2021, 12:49 pmIn the spirit of 'defining terms' how do you define 'logical difference'? But I digress...

Well, that was the point of my original post. That was exactly the question I was hoping folks on this forum might have an opinion on. Feel free to reread my original post and comment on my thoughts to save me repeating them here.

Einstein is quoted as saying: everything should be as simple as possible, but not simpler.

Indeed, and I would certainly say that is what I'm aiming for. Simple, but not so simple that the baby has been thrown away.

Quote from dandl on December 2, 2021, 12:49 pm

In the spirit of 'defining terms' how do you define 'logical difference'? But I digress...

Well, that was the point of my original post. That was exactly the question I was hoping folks on this forum might have an opinion on. Feel free to reread my original post and comment on my thoughts to save me repeating them here.

Einstein is quoted as saying: everything should be as simple as possible, but not simpler.

Indeed, and I would certainly say that is what I'm aiming for. Simple, but not so simple that the baby has been thrown away.

**Page 2 of 2**