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

World: r3wp

[Core] Discuss core issues

GrahamC
4-Dec-2010
[606]
seems expensive to sort each element first
Andreas
4-Dec-2010
[607]
Cheaper than sorting it during each find.
GrahamC
4-Dec-2010
[608]
intersect I guess
BrianH
4-Dec-2010
[609]
Sort the elements on insert and keep them sorted. Then sort the value 
you are comparing to before looking for it.
Andreas
4-Dec-2010
[610]
Thanks, Brian, for reformulating what I wrote above.
BrianH
4-Dec-2010
[611]
Ah yes :)
Andreas
4-Dec-2010
[612x2]
Interesting R3 "bug" btw:
>> intersect [[1 2] [3 4] [5 6]] [[4 3]]
** Script error: block! type is not allowed here
Works fine in R2.
BrianH
4-Dec-2010
[614]
There is a ticket for that.
GrahamC
4-Dec-2010
[615x2]
very odd ... I changed to using blocks instead of sql, and the query 
increased from 1.7 s to 7 seconds!
I guess the sql indices are just faster than using a brute force 
search thru blocks
Henrik
5-Dec-2010
[617]
does a REBOL tar dearchiver exist? I can find an archiver in rebol.org, 
but not one the other way around.
BrianH
5-Dec-2010
[618]
Graham, you can do your own indices using hash!, but that might be 
pushing your complexity budget. Try it and see.
Anton
6-Dec-2010
[619]
Henrik, just run the program backwards.
...... sorry.
Rebolek
9-Dec-2010
[620]
Is there some function for switching two values in series? Ie. I 
have [1 2 3 4 5 6] and want to switch second and third element so 
result is [1 3 2 4 5 6].
Anton
9-Dec-2010
[621]
reverse/part
Rebolek
9-Dec-2010
[622]
I'm afraid this will not help very much if I want to switch second 
and fifth element.
Henrik
9-Dec-2010
[623]
MOVE
Rebolek
9-Dec-2010
[624]
thanks!
Henrik
9-Dec-2010
[625]
:-)
BrianH
9-Dec-2010
[626x2]
Also SWAP.
SWAP is designed for just this situation, and has been backported 
to R2 as well. Here is the source if you have an old R2 version:
swap: func [
    "Swaps elements of a series. (Modifies)"
    series1 [series!]
    series2 [series!]
][
    unless any [empty? series1 empty? series2] [

        poke series1 1 also pick series2 1 poke series2 1 pick series1 1
    ]
    series1
]
Rebolek
9-Dec-2010
[628]
SWAP is not mezanine, better!
BrianH
9-Dec-2010
[629]
In R3, true :)
Rebolek
9-Dec-2010
[630]
Ah, sorry, I was looking for R3 sollution.
BrianH
9-Dec-2010
[631x3]
Note that the unless guard above is compatible with the R3 version. 
If either series is empty or at its tail at that position, it's a 
noop, silently.
So watch out.
Watch out for this limit in R3 too (which I forgot to backport):
>> swap a: "a" b: %b
** Script error: values must be of the same type
** Where: swap
** Near: swap a: "a" b: %b
Rebolek
9-Dec-2010
[634]
I need it for blocks that has been sanitized before, so no problem 
here.
BrianH
9-Dec-2010
[635]
As far as I can tell, the single type restriction is so the implementation 
of the action in the various datatypes can be simplified. I am interested 
to see how well SWAP works for gobs though. Can you test this and 
see if there are bugs?
Rebolek
9-Dec-2010
[636]
Yeah, I will. But I expect problems, gob! series support is very 
limited.
BrianH
9-Dec-2010
[637]
There shouldn't be any problems with this particular operation being 
defined, but I haven't done much bug testing since I don't need any 
graphics support most of the time. All I do is core.
Rebolek
9-Dec-2010
[638x2]
As expected:

>> swap g next g
** Script error: cannot use swap on gob! value
** Where: swap
** Near: swap g next g
this IS core stuff. i haven't called view ;)
BrianH
9-Dec-2010
[640x2]
Does it work between different gobs? Note: It would only work with 
gobs that have subgobs, in theory.
If it doesn't, this needs a ticket. There are other similar gob bugs 
(CHANGE comes to mind).
Rebolek
9-Dec-2010
[642]
Does it work between different gobs?

 - no, it doesn't work between two gobs and it doesn't work for one 
 gob (with sub gobs).
BrianH
9-Dec-2010
[643]
Then we need a ticket for that. I would think that there would be 
some GUI reasons for doing SWAP, though more for doing MOVE.
Steeve
9-Dec-2010
[644]
Well it' s a bad example, because
>> swap g next g
is easly performed with:
>> insert g g/2
:-)
Ladislav
9-Dec-2010
[645]
??

>> g: [a b]
== [a b]
>> insert g g/2
== [a b]
>> g
== [b a b]
BrianH
9-Dec-2010
[646]
I just checked, and all of the functions called by MOVE are compatible 
with gobs. If they behave in a similar way then we can add gob support 
to MOVE.
Steeve
9-Dec-2010
[647]
working with gobs only
Ladislav
9-Dec-2010
[648]
working with gobs only
 - isn't it a bug, then?
Steeve
9-Dec-2010
[649x4]
No it's a feature
A Gob can only have one parent at a time.
when you insert a gob already connected somewhere, it's automacly 
removed from the old place
Great feature
Rebolek
9-Dec-2010
[653x3]
hmmm
Yes, I agree
Hm, I see that gob! now supports CHANGE and POKE, good news.