World: r3wp
[Core] Discuss core issues
older newer | first last |
GrahamC 3-Dec-2010 [603] | There's a big difference in price between the various CPU configurations on amazon |
GrahamC 4-Dec-2010 [604] | We have find/only for this a: [ [ 1 2 ] [ 3 4 ] [ 5 6 ]] find/only a [ 3 4 ] but what if we wanted to find [ 4 3 ] where we want [ 3 4 ] to be equal [ 4 3 ] ie. same set? |
Andreas 4-Dec-2010 [605] | Store sorted in a and sort the query before find. |
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 | |
older newer | first last |