World: r3wp
[Core] Discuss core issues
older newer | first last |
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 :) | |
older newer | first last |