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

World: r3wp

[RAMBO] The REBOL bug and enhancement database

Ladislav
3-Nov-2006
[1922x2]
what do you think about these:

>> p: make port! http://
>> equal? reduce [p] reduce [p]
== true
>> equal? p p
** Access Error: Port none not open
** Near: equal? p p

or

>> a: tail [1]
== []
>> remove head a
== []
>> equal? reduce [a] reduce [a]
== true
>> equal? a a
** Script Error: Out of range or past end
** Near: equal? a a
it looks inconsistent to me and incompatible with FIND and SORT as 
well
Gregg
3-Nov-2006
[1924]
It does look like a problem. Things like this are funny, because 
it seems like an obvious issue we would have hit long ago. :-\
Henrik
3-Nov-2006
[1925]
ladislav, you aren't causing Carl any sleepless nights now, are you? 
:-)
Ladislav
3-Nov-2006
[1926]
no, he silently ignores my huge list
Gregg
3-Nov-2006
[1927]
Except that I don't get the error you get on the second example.
Ladislav
3-Nov-2006
[1928]
you don't?
Gregg
3-Nov-2006
[1929x2]
No. Let me try a fresh console.
Hmm. I got it this time.
Ladislav
3-Nov-2006
[1931]
it surprises me you didn't the first time
Gregg
3-Nov-2006
[1932]
Me too. Let me check something.
Henrik
3-Nov-2006
[1933]
ladislav, well it could be that he's incorporating fixes into R3.
Gregg
3-Nov-2006
[1934x2]
Oh well, it happens every time now. Must have been something odd. 
Can't dupe it right now.
Can't dupe it working that is. :-)
Ladislav
3-Nov-2006
[1936]
that does not surprise me like the opposite did
Gregg
3-Nov-2006
[1937]
That one comes back to the old issue of out of range indexes, which 
has been around for a long time, correct?
Ladislav
3-Nov-2006
[1938x2]
yes, it is an old issue, actually
but my point is, that you cannot state comparing A with A may be 
an error without asking for trouble
Gregg
3-Nov-2006
[1940]
Agreed.
Ladislav
3-Nov-2006
[1941]
it is clearly more useful to allow comparisons as FIND or SORT demonstrate 
than to forbid them
Gregg
3-Nov-2006
[1942]
I would say that you can't do *anything* safely on a series reference.
Maxim
3-Nov-2006
[1943]
linked lists being an exception.
Gregg
3-Nov-2006
[1944]
It obviously doesn't affect much code, though, or we would all be 
screaming about it.
Maxim
3-Nov-2006
[1945]
they are easy to break and fuck up.
Ladislav
3-Nov-2006
[1946x4]
lists will be redesigned for R3 (with my contribution, I hope)
Re the new SWITCH proposal. ( Mezz/switch1.r). It fails in the following 
cases (due to FIND datatype searching properties):

switch-test: func [x] [
	switch :x [
		#[datatype! integer!] ["The first variant"]

  #[datatype! decimal!] #[datatype! block!] ["The second variant"]
	]
]

switch-test block!
switch-test decimal!
(the old SWITCH implementation fails for similar cases too)
I guess it would be useful to have a FIND/LITERAL refinement to behave 
differently when searching for datatypes
Maxim
3-Nov-2006
[1950]
this is my gripe with lists:

>> a: make list! [1 2 3] clear a tail? a
** Script Error: Out of range or past end
** Near: tail? a
Ladislav
3-Nov-2006
[1951]
yes, that is an issue my proposal for lists solves
Gregg
3-Nov-2006
[1952]
I often end up using REDUCE when dealing with datatypes that way.
Ladislav
3-Nov-2006
[1953]
yes, but here the issue is, that FIND does not allow us to implement 
SWITCH reliably
Anton
3-Nov-2006
[1954]
Ladislav, yes, these inconsistencies hold back rebol's reflection 
somewhat.

Maybe it's excusable for ports, though, because they are kind of 
"custom series datatypes"... have to think carefully about that.
Ladislav
4-Nov-2006
[1955]
excusable - the trouble is, that EQUAL? is incompatible even with 
itself this way, not speaking about FIND or SORT. It is too hard 
to implement custom FIND or SORT using "unreliable comparisons".
Anton
4-Nov-2006
[1956x2]
Yes, I agree. I suppose EQUAL? is COPYing the port, what do you think 
? Maybe it's just a minor implementation flaw. Can you see what it 
might be ?
By the way, I found handling all the different datatypes consistently 
very difficult each time that I've launched into doing that. It would 
help development of all sorts of reflective tools if rebol is completely 
consistent and reliable there. Search tools / debugging tools / test 
kits (all that stuff you're probably doing right now.) This is one 
of those core issues which affects so many other higher level tasks, 
it should be ranked High or Critical.
Ladislav
4-Nov-2006
[1958]
my guess is, that it may be "by design", but I don't like it this 
way
Anton
5-Nov-2006
[1959]
I think it may only be a side-effect of an incomplete implementation.
Ladislav
8-Nov-2006
[1960]
user poll: what do you think about RAMBO #3518?
Maxim
8-Nov-2006
[1961]
I do admit that he has a point wrt how the help states things. if 
 there is a stated difference between  '=  and '==   then maybe the 
'= should be expanded (and explicitely documented)  for obviously 
equal values...

like char and one letter string,
$ and equivalent decimal,
 etc.
Ladislav
8-Nov-2006
[1962]
char and one-letter string is not "obvious" for me, but a more "obvious" 
thing may be a comparison of [a] versus (a) or "a" versus %a etc.
Maxim
8-Nov-2006
[1963x4]
isn't a character and "one letter" the same thing semantically?
but in general I am in favor of expanding the equality, as long as 
it does not have side effects like breaking:  if, any, all
I know many people would like to expand these to include empty strings 
and 0, just like python does... but in such a case, many usefull 
uses of any/all will loose their value.
I have considerably reduced useage of if and either since I have 
truely grasped Carl's elaborate and repeated use of any/all
Gregg
8-Nov-2006
[1967]
You have to draw the line somewhere. I think we'd have to discuss 
it on a case-by-case basis, because you can't always substitute one 
value for another, e.g. strings, files, and urls. So, even though 
it seems like two any-string! values could be compared safely, that 
might not work in our favor in real life. We could create a matrix 
and examples for duscussion; I'd be hesitant to change it without 
deeper thought.
Maxim
8-Nov-2006
[1968]
yes obviously, and we could also add a new "loose" equality ~= or 
whatever... but in any case... all matching type-pairs should be 
explicitely explained and documented.
Gregg
8-Nov-2006
[1969]
Agreed.
Maxim
8-Nov-2006
[1970x2]
and we should decide first and foremost if its the intented value 
of the datatype which is consistent or the actual lexical form which 
is the consistent measure.
in some types this will have a lot of meaning/differentiation  ... 
take the date for example... do we equate the number of seconds, 
or the lexical textual form... or both, depending on other type pair...