RE: compare() and equal()
- Posted by Kat <gertie at PELL.NET> Apr 09, 2001
- 489 views
On 10 Apr 2001, at 4:43, Al Getz wrote: > > Kat wrote: > > On 8 Apr 2001, at 23:56, Derek Parnell wrote: > > > > > > > > > > Hi Kat, > > > I just did this ... > > > > > > ? compare({1,2,{3,{4}},5}, {2-1,1+1,{3,{4}},6-1}) > > > ? equal({1,2,{3,{4}},5}, {2-1,1+1,{3,{4}},6-1}) > > > > > > ... > > > and I got displayed ... > > > > > > 0 > > > 1 > > > > > > which is exactly what I'd expect. There was no error message or the > > > like. > > > > Well, i just changed a bunch of these: > > if equal(a,b) then > > > > to: > > if (compare(a,b) = 0) then > > > > because the nested sequences in the equal() line were crashing the > > program! > > The compare() line runs fine now. > > > > > > Also, if equal() is true, it returns boolean true, but if > > > > compare() is true, it returns > > > > boolean false. > > > > > > > > > > But compare() can *never* be true as it does not return a true/false > > > indicator. It isn't meant to. It just tells if parameter#1 is less than, > > > equal to, or greater than parameter#2. And this is not a boolean thing. > > > > It returns zero or non-zero, and zero equates to false in a boolean > > compare. > > Equal() returns 1 (true) or 0 (false) the same way, but the true-1 in > > equal() > > and the true-0 in compare() feels too odd. > > > > Kat > > > > > <snip> --if equal(left,right) if (compare(left,right) = 0) -- 0 = equal !! then result &= sprintf("%s", {right}) else result &= sprintf("[%s,%s]", {left,right} ) end if that is copy/pasted, which messed up the indents. The top line errors out, the bottom line runs fine. ACK ok, something odd going on... i just commented out the compare() to use the equal() and get the ex.err to copy paste here too, and it ran, crashing at the else line. But i swear to you, if it had not been crashing, reporting the error on the equal() line, i sure wouldn't have re-written it to use compare()! Btw, that's code undergoing revisions, not working code in anything. > Euphoria's interpreter sometimes doesnt report an error > untill it can fully resolve a block of code. erg. Kat