r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3 Proposals] For discussion of feature proposals

BrianH
20-Jan-2011
[745]
Good to know. How would it affect numeric code if we made this change? 
Do we need operators for exact comparison?
Ladislav
20-Jan-2011
[746]
numeric code - I do not think this specific property can affect anything
BrianH
20-Jan-2011
[747]
We don't use denormalized numbers or anything like that which would 
make numbers with different bit patterns refer to the same number?
Ladislav
20-Jan-2011
[748]
I am not sure I understand your question. Nevertheless, the least 
strict is currently Equal?, which, most probably, is useful. The 
most strict (for numeric code using decimals) that we could need 
is Equiv? The Same? is is important only because it is the most strict 
possible
Andreas
20-Jan-2011
[749]
I think the real question is: we also have strict-equal? which is 
(IIUC) as strict as equiv? for numeric code using decimals _and_ 
is also mapped to operators: == and !==.
BrianH
20-Jan-2011
[750]
I am trying to determine whether it would be acceptable to replace 
== with =? in decimal code where exact comparison is needed. Otherwise 
we would need to switch to prefix form if this proposal goes through, 
which math people don't necessarily like, or come up with operators 
for the equiv line.
Andreas
20-Jan-2011
[751]
If we keep the mapping of strict-equal? to == then == would loose 
the added decimal precision under the new proposal.
BrianH
20-Jan-2011
[752]
Andreas, do you like the new wording?
Andreas
20-Jan-2011
[753]
To be honest, no.
Ladislav
20-Jan-2011
[754]
Hmm, I would prefer the current state, then:


- == is what I would use frequently, while I would not want to use 
=? in place of it, because of the difference

- the change would require quite a lot of work, and where is a guarantee, 
that a new idea does not occur in a couple of weeks again?
BrianH
20-Jan-2011
[755]
The long wording is for precision, and because these tickets serve 
as documentation of the issues for future reference.
Andreas
20-Jan-2011
[756x4]
I don't want to define what the comparison dimensions are in this 
ticket. Leave that to an external document.
That only hides the important issue.
Also, it is wrong: "equal? ... ignores case-aliasing of words".
equal? also ignores every other aliasing.
BrianH
20-Jan-2011
[760]
I changed that.
Andreas
20-Jan-2011
[761x3]
Still wrong.
>> a: 42
== 42

>> alias 'a "b"
== b

>> equal? 'a 'b
== true
Ladislav, thanks. Seems the better option then would be to map == 
and !== to strict-equiv? and strict-not-equiv?.
BrianH
20-Jan-2011
[764]
I don't want to emphasize the aliasing thing or otherwise the ticket 
would need editing if/when ALIAS goes away. Still, good point.
Andreas
20-Jan-2011
[765]
Then don't emphasize it. It is one comparison dimension that currently 
exists.
BrianH
20-Jan-2011
[766]
That reminds me, need to check whether there is a ticket to remove 
ALIAS.
Andreas
20-Jan-2011
[767x3]
No, there is not.
Ignores datatypes, bindings, case, aliasing.
 should be sufficient
Also, get rid of the *NOT* mentions in the main body. If at all, 
mention that in a remark at the end of the ticket.
BrianH
20-Jan-2011
[770x2]
Good idea.
Done.
Ladislav
20-Jan-2011
[772]
BTW, Same? is still less strict than my Identical? (even for decimals)
BrianH
20-Jan-2011
[773]
Interesting. How does that happen? I thought SAME? just did a bit-for-bit 
comparison.
Ladislav
20-Jan-2011
[774]
yes, but the NEW-LINE? bit is ignored
Andreas
20-Jan-2011
[775x2]
Heh :) awesome.
Ok, ticket's good. Thanks Brian.
BrianH
20-Jan-2011
[777]
That's funny :)
Andreas
20-Jan-2011
[778]
(Maybe add a blank linke before the - EQUAL? item.)(
BrianH
20-Jan-2011
[779]
I didn't even know there was a newline bit, though it seems obvious 
in retrospect. It would be lost in the transfer of the value to the 
stack frame for the function call I bet, because stack frames and 
value slots of contexts don't keep track of newlines. You'd have 
to pass in a reference to the block the value is stored in, I'm guessing.
Ladislav
20-Jan-2011
[780]
wrong
BrianH
20-Jan-2011
[781]
Even more interesting. Say more.
Ladislav
20-Jan-2011
[782]
written in http://www.rebol.net/wiki/Identity#The_new-line_attribute
BrianH
20-Jan-2011
[783]
I used to think that newlines in blocks were hidden values in the 
block itself. It makes sense to just have it be a bit in a value 
slot.
Andreas
20-Jan-2011
[784x2]
It is a value bit.
>> a: copy [1 2 3]
== [1 2 3]

>> new-line next a on     
== [
    2 3
]

>> b: copy []             
== []

>> append b first a   
== [1]

>> append b second a  
== [1
    2
]

>> append b third a   
== [1
    2 3
]
BrianH
20-Jan-2011
[786x2]
Guess it's in all value slots, not just the ones in block types, 
and just ignored when inapplicable.
At least that makes the value slot easier to implement. Good choice.
Ladislav
20-Jan-2011
[788]
Well, it is not ideal this way, for two reasons:


- it does not affect all possible line break positions in a block 
(there are n + 1 such positions in a block of length n, as can be 
easily figured)
- it "pollutes" the values, affecting their identity, e.g.
Andreas
20-Jan-2011
[789]
Well, the latter is probably why same? does not respect this bit, 
no :) ?
BrianH
20-Jan-2011
[790]
It also makes the "immediate values aren't modifiable" argument a 
little more iffy.
Ladislav
20-Jan-2011
[791x3]
But the differences are real, that is like putting our head into 
the sand pretending there is no danger nearby
{It also makes the "immediate values aren't modifiable" argument 
a little more iffy.} - I do not use the notion of "immediate values", 
neverheless, it does not, I would say
(the NEW-LINE attribute is immutable)
BrianH
20-Jan-2011
[794]
It's mutable with the NEW-LINE function :)