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

World: r3wp

[Core] Discuss core issues

Anton
16-Aug-2010
[17891x2]
No, wait a minute... that's what BIND-FUNCS is for. Currently it 
only affects HELLO, but you just need to add all the functions which 
need binding into the block:
foreach window-function [hello get-data update-gui etc.]  ...
So you can have nested function calls as deep as you like, as long 
as you specify those which need binding in BIND-FUNCS.
Graham
16-Aug-2010
[17893x2]
ok, but the other issue is that the function has to be rebound each 
time it is used
Was that what Gab was saying ..?
Anton
16-Aug-2010
[17895x2]
No, Gregg's first example suffered because it only did a BIND once, 
when the window was created. It needs to do the bind every time the 
button is pressed.
So Gregg's example would work for each window as long as that window 
was the last window opened. As soon as you opened a new window, none 
of the other windows would work properly anymore.
Graham
16-Aug-2010
[17897]
ah... mine bound with each button press
Anton
16-Aug-2010
[17898]
USER-DATA in the window faces seems unlikely to be used to me. You 
could also probably use DATA without problems as well. It depends 
on whether any other VID extensions are being used in your system, 
which could theoretically use that facet for something. Of course 
you can associate the window with it's vid-context by other means 
which doesn't touch any of the window facets at all...
Gabriele
16-Aug-2010
[17899x2]
Graham: when you use vid-context/to, the word you pass in is set 
to an object. the object contains all the set-words you used in the 
vid block. example:
>> lay: layout vid-context/to [f: field g: button] 'ctx
>> ? ctx
CTX is an object of value: 

   f               object!   [type offset size span pane text color 
   image effec... 

   g               object!   [type offset size span pane text color 
   image effec...
Graham
16-Aug-2010
[17901]
A concrete example would help me here :)
Gabriele
16-Aug-2010
[17902x2]
now you can pass this object to your functions so that you can use 
them with many layouts.
eg. you make c: func [obj] [obj/f/text: "something" ...]
Graham
16-Aug-2010
[17904x2]
ok, so this does involve some rewriting of functions
and I guess is not that different to passing a context to a function 
as discussed above
Gabriele
17-Aug-2010
[17906]
if you really can't touch the functions, you might as well just reuse 
the same globals, no? rebinding them is also "global" so there's 
not much difference.
amacleod
17-Aug-2010
[17907]
what's 'vid-context/to'?

I get an error?
Anton
17-Aug-2010
[17908]
It's in Gabriele's utility.r library which he mentioned on Saturday.
amacleod
18-Aug-2010
[17909]
thanks...i missed that
Graham
18-Aug-2010
[17910x2]
If I had a large numer of sorted strings, how can I most efficiently 
find the first string which partially matches my search string.  
Eg. I want search on '"find*"
A hash doens't allow me to do a wild card search
Gregg
18-Aug-2010
[17912]
http://www.rebol.org/view-script.r?script=like.rlets you do more 
than find/any, but you're still going to have the overhead of checking 
each string. Depending on your needs that may work, or you could 
make one big string out of them and just PARSE that.
Graham
18-Aug-2010
[17913x2]
find [ "ab" "bc" "bd" ] "b*"
looks like I should try and get a hash for each first letter, first 
and second letter etc so I can at least narrow it down to the first 
3 letters and then do search on everyone after that.
Gregg
18-Aug-2010
[17915]
How many strings and what kind of performance do you need?
Graham
18-Aug-2010
[17916x2]
18,000 strings....  real time.... as each time they type a character 
I am presenting a list of choices
I am emulating this http://rxterms.nlm.nih.gov:8080/
AdrianS
18-Aug-2010
[17918x2]
have you thought about using SQLite?
I wonder how that would compare with doing REBOL lookups
Graham
18-Aug-2010
[17920]
I was just thinking that!
Gregg
18-Aug-2010
[17921]
The example helps enormously Graham, because you said "first string" 
but now I see you want all matches for a given prefix.
Graham
18-Aug-2010
[17922]
once I get the first string .. then I can easily get the others as 
I sort the 18k strings first
AdrianS
18-Aug-2010
[17923]
is the existing sqlite driver work over the wire or does it do in 
process calls?
Graham
18-Aug-2010
[17924x4]
Maybe I need RIF
I've never used sqlite
I wonder if Ashley's rebdb would work ...
He doesn't have a like clause ... but I guess it could be faked
Gregg
19-Aug-2010
[17928x2]
Graham, did you try REFORMing into a single string and using FIND/ANY? 
I did a quick test here and it's instant for me with 18K random "words" 
making a 200K string finding the last word (non-random for testing).
Hmmm, some of the terms aren't single words though.
Graham
19-Aug-2010
[17930]
In effect you've created an index
Gregg
19-Aug-2010
[17931]
No, just a list of single-value records. :-)
Graham
19-Aug-2010
[17932]
Actually I wonder why find/any shouldn't work on series like these
Gregg
19-Aug-2010
[17933x2]
Or you can say I created an index and the query system with two function 
calls.
You mean a block containing string values?
Graham
19-Aug-2010
[17935x3]
sure ..
>> help find
USAGE:

    FIND series value /part range /only /case /any /with wild /skip size 
    /match /tail /last /reverse
Doesn't say blocks are not included
Gregg
19-Aug-2010
[17938]
But it's not find/deep, which is what you want.
Graham
19-Aug-2010
[17939x2]
for the /match refinement
Since it's a read only db, perhaps I could use Cyphre's compiler 
:)